home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / rbcom341.zip / RBCOMM.DOC < prev    next >
Text File  |  1993-01-10  |  112KB  |  2,676 lines

  1. RBcomm v3.41  Copyright (c) 1989-1993 Ralf Brown  All Rights Reserved
  2.  
  3. You may redistribute this program provided that you provide unmodified
  4. copies of all files, and do not charge any fee for making the copy.
  5.  
  6. --------------------------------------------------------------------------
  7.  
  8.  
  9. RBcomm is a lean and mean comm program which will run in 46K without
  10. file transfer capability or 65K with file transfer capability. Since it
  11. is so lean, you will not get a lot of the fancy features of other comm
  12. programs, though there are plenty of features to let you get your work
  13. done (I've been using it exclusively for over five years, and have
  14. added features as I've found that I could be more productive with them
  15. than without).
  16.  
  17. Features:
  18.     small (runs in as little as 46K [65K with DSZ, 66K with Puma/MPt])
  19.     DESQview-aware
  20.     pop-up menus
  21.     'type' a file to the remote system, optionally expanding blank lines
  22.     seamless file transfer using DSZ, PCZ, or Puma/MPt
  23.     Zmodem autodownload (others easily added)
  24.     shell to DOS, using well under 1K while shelled
  25.     keyboard reassignment, powerful keystroke macros, "DOORWAY" mode
  26.     250-number dialing directory
  27.     ANSI/VT102, VT52, and AVATAR level 0 terminal emulations
  28.        [UnixWindows and AVATAR level 1 partially implemented]
  29.     ANSI music
  30.     132-column support
  31.     supports the 16550A UART's FIFOs and speeds to 115,200 bps
  32.        (a 4.77MHz 8088 can handle 19200)
  33.     scrollback buffer
  34.  
  35. Registration:
  36.     Continued use of DSZ requires registration with Omen Technology, Inc.
  37.     See the DSZ documentation for details.
  38.  
  39.     Continued use of Puma/MPt requires registration with Matthew Thomas.
  40.     See the Puma or MPt documentation for details.
  41.  
  42.     If you like RBcomm, send me a picture postcard of some sight in your
  43.     area.  If you don't like RBcomm, feel free to send me a postcard
  44.     anyway, telling me what you don't like.     I just might change the
  45.     thing you don't like in the next release.
  46.  
  47. Support:
  48.     None (after all, I'm not getting any money for this).  I will try to
  49.     fix bugs as time allows.  When reporting a suspected bug, please
  50.     include as much detail as possible (such as a verbose log if it
  51.     involves the terminal emulation).
  52.  
  53. DISCLAIMER:  This software is distributed AS IS and without any express
  54.     or implied warranties.    The author disclaims all responsibility
  55.     for any damages which might be incurred as the result of using
  56.     or misusing* the program.  Although widely used by many people,
  57.     the software is not guaranteed to function on any system other
  58.     than the author's own. 
  59.       *RBcomm has the ability to overwrite or delete files, which can
  60.        result in data loss if used indiscriminately.
  61.  
  62.  
  63.     Ralf Brown            [valid until November 1, 1993]
  64.     813 Copeland Way, Suite 26
  65.     Pittsburgh, PA 15232
  66.  
  67.     Internet: ralf+@cs.cmu.edu
  68.     UUCP: {harvard,ucbvax,uunet}!cs.cmu.edu!ralf
  69.     BIT:  ralf%cs.cmu.edu@cmuccvma
  70.     FIDO: Ralf Brown 1:129/26.1
  71.  
  72. Files in the RBcomm distribution archive:
  73.     RBCOMM.DOC    this file
  74.     COMM.COM    the RBcomm main program
  75.     RBCONFIG.COM    the configuration program
  76.     MACRO.COM    the keyboard macro compiler
  77.     DVPWIDTH.COM    program to set maximum width in DESQview .DVP files
  78.     R?-PIF.DVP    DESQview program information files
  79.     *.MAC        keyboard macro definition sources
  80.     *.HLP        help screens for corresponding macro files
  81.     TERMCAP        Unix "termcap" entry for RBcomm
  82.  
  83. Availability:
  84.     The newest version is always available on:
  85.        SoundingBoard 1:129/26 File Requests
  86.        (412)621-4604
  87.        24 hours, USR HST 14.4
  88.  
  89.        CS.CMU.EDU [128.2.222.173]
  90.        directory /afs/cs.cmu.edu/user/ralf/pub
  91.        You must change directly to this directory with a single
  92.          command due to the way our anonymous FTP works.
  93.  
  94.     New versions will also be available here within a few days of release:
  95.        Rosedale Dataline
  96.        (301)866-4554
  97.        24 hours, USR HST 9600
  98.        TP Board
  99.  
  100.        Fidonet nodes participating in DVNet
  101.  
  102.        WSMR-SIMTEL20.ARMY.MIL [26.2.0.4]
  103.        directory PD:<MSDOS2.MODEM>
  104.  
  105. System Requirements:
  106.        IBM PC or close compatible
  107.        at least 46K free memory (65K for file transfers)
  108.        one or more serial ports
  109.        DOS 2.0 or higher
  110.        48-128K disk space or EMS or XMS memory for swapping, depending
  111.          on configuration
  112.  
  113. -------------------------------------------------------------------------------
  114. Installation
  115. ------------
  116.  
  117. Before you use RBcomm for the first time, you need to tell it where to find
  118. its support files and how to talk to the modem.     To do so, copy the RBcomm
  119. files to the directory in which you wish to install them, change to that
  120. directory, and type
  121.  
  122.     RBCONFIG CONFIG COMM.COM
  123.  
  124. (if COMM.COM is not in the current directory, use the full path, i.e.
  125. C:\COMM\COMM.COM, or RBCONFIG will not be able to find it)
  126.  
  127. Please do not use your original copy.  If you forget to run RBCONFIG, you
  128. will be told to do so when you attempt to run COMM.COM.
  129.  
  130. You will now be asked (via a menu) to fill in several groups of information.
  131. Note that you may use either forward slashes ('/') or backward slashes
  132. ('\') to separate directories in a pathname.
  133.  
  134. Press 'D' to set the directories and extensions to use.
  135.    RBcomm dir:    where the keyboard macro files and dialing directory are stored
  136.    Swap directory: where to store the swap file when running DSZ or COMMAND.COM
  137.         and neither EMS nor XMS is available.  A RAMdisk is ideal for
  138.         storing the swap file, which will be about 64K (the exact size
  139.         depends on your setup).
  140.    Use XMS if available:  if set to N, RBcomm will always swap to disk in the
  141.         directory specified by the previous item, or EMS if enabled.
  142.         If set to Y (default), RBcomm will swap to XMS memory if there
  143.         is enough available.
  144.    Use EMS if available:  if set to N, RBcomm will always swap to either XMS
  145.         (if available) or to disk.  If set to Y (default), RBcomm will
  146.         swap to EMS memory if XMS is unavailable and there is enough
  147.         free EMS.
  148.    Macro file extension:  default extension to apply to keyboard macro files
  149.    Default macro file:      keyboard macro file to load on startup and hangup
  150.         if this file does not exist, RBcomm will use a built-in set
  151.         of default key bindings
  152.  
  153. Press 'S' to select the serial port to use.  You may setup
  154. configurations for "COM1" through "COM4", as well as the default port to
  155. use when not otherwise indicated in the dialing directory. The values
  156. given for "COM3" and "COM4" need not bear any relationship to the
  157. numbering of the actual serial ports in your system (you could, for
  158. example, set them up to be the same as "COM1" except for the length of
  159. the break signal).  RBCOMM does check that "COM1" and "COM2" exist
  160. according to the BIOS data area, however, to avoid running in a DESQview
  161. window which has incorrect settings for supporting serial
  162. communications.     Break length specifies the length of the signal that is
  163. sent when you give the break command (default Alt-B) in multiples of the
  164. standard clock tick of 55ms.  You may specify a separate setup string
  165. for each port.    The setup string needs to ensure that the modem echos
  166. back any commands it is sent, and asserts carrier detect only while
  167. actually connected with another modem (for Hayes-compatible "AT" command
  168. sets, "E1&C1").
  169.  
  170. Press 'M' to define the modem setup.  In this section, you need to enter
  171. several strings to be sent to the modem, and the strings the modem will
  172. return to RBcomm.  Note that you may enter control characters such as ^M
  173. (carriage return) by pressing control-Q followed immediately by the
  174. desired control character.  You can enter a DEL (ASCII 127) by pressing
  175. Alt-D.    Since most modems nowadays use the Hayes 'AT' command set, the
  176. only entry you are likely to change is "dial prefix", which will be
  177. "ATDT" for touch-tone dialing or "ATDP" for pulse dialing.  Note that
  178. the responses should be set to the shortest substring that uniquely
  179. identifies the response.
  180.  
  181. Press 'P' to setup dialing parameters.    You may specify the name of the
  182. dialing directory, how long to try before declaring a time-out, and how long
  183. to wait before trying again.
  184.  
  185. Press 'F' to set the commands and parameters to execute for the various
  186. file transfer protocols.  You may embed replaceable parameters
  187. introduced by a percent sign into the command strings--see the EXEC
  188. macro command for details.  An additional replacement of %F is available
  189. which expands to the name(s) of the file(s) to transfer.  Note that the
  190. default "portx" will cause DSZ to report the port as COM9, but it will
  191. still use the correct serial port. You need to use "portx" if you will
  192. be using more than one serial port.
  193.  
  194. Press 'C' to set the colors you want RBcomm to use.  You may select the
  195. default and "underlined" colors, as well as the colors to use on menus
  196. and in the scrollback viewer.
  197.  
  198. Press 'V' to determine whether 132-column mode should be enabled, whether
  199. to start in 132- or 80-column mode, and the register values needed to set
  200. 132-column mode.  When running under DESQview, RBcomm can tell DESQview to
  201. set the virtual screen size to 132 columns if you specify zero for AX.
  202. DESQview will then display as much as it can at one time; this is useful
  203. if you need a 132-column display but do not have a video board which
  204. supports 132 columns.
  205.  
  206. Press 'T' to adjust a number of toggles.  Many of these may also be changed
  207. from within RBcomm.
  208.    "Local echo" allows you to turn on half-duplex operation by default.
  209.    "Verbose" sets whether to include terminal control sequences in a log file.
  210.    "Strip parity bit" specifies whether the high bit should be stripped from
  211.       all incoming characters, even when parity is set to None.
  212.    "Visual bell" specifies whether to flash the screen instead of sounding a
  213.       beep when a ^G is received (internally-generated beeps always use sound).
  214.    "Should backspace send delete" specifies whether the values sent by
  215.       backspace and control-backspace should be exchanged.
  216.    "Check for enhanced keyboard" determines whether RBcomm will use the
  217.       enhanced keyboard BIOS calls if it thinks those calls exist.  Some
  218.       systems incorrectly indicate support for those calls.  Set this to
  219.       'N' if RBcomm appears to hang your system.
  220.    "May RBcomm to change NumLock" determines whether RBcomm will change the
  221.       state of the NumLock key when it receives the "keypad numeric mode" or
  222.       "keypad application mode" commands.  Disabling the NumLock changes is
  223.       useful for laptop users without a separate number pad.
  224.    "Save screen" specifies whether the current screen is saved prior to
  225.       executing external programs (except for file transfers) and restored
  226.       afterwards.  If the screen is saved, you will be asked to press a
  227.       key before the screen is restored.
  228.  
  229. Finally, press 'O' for miscellaneous options.
  230.    "Heap size" determines how much memory RBcomm allocates for macro files,
  231.       macro execution, and some of RBcomm's own processing.  This must be
  232.       set to at least 800 bytes more than the size of the largest macro
  233.       (.RBM) file.  A larger setting will not harm, but will needlessly
  234.       use more memory.    Should you get an "out of memory" or "stack full"
  235.       error message, you will need to increase this value.  When set to
  236.       zero, RBcomm will grab as much heap space as it can (about 24K).
  237.    "Number of screens" specifies how many virtual terminals to allocate
  238.       space for.  This will become useful for the UnixWindows protocol;
  239.       most users will want to set this value to 1.
  240.    "Time between sends in idle mode" determines how often Idle mode (see
  241.       Alt-I) sends some characters to keep the connection alive when you
  242.       are not actively using RBcomm.
  243.    "String idle mode sends" specifies what characters to send to keep the
  244.       connection alive.
  245.    "Answerback message" allows you to specify the string which RBcomm will
  246.       send when it receives a ^E.  The ANSWERBACK macro command can override
  247.       this setting.
  248.    "Default pace character" determines which character RBcomm will wait for
  249.       after sending each line of text from the file being typed to the
  250.       remote system.  Setting this value to ^@ means that RBcomm will not
  251.       pause after each line.  This setting may be changed while RBcomm is
  252.       running by using the PACECHAR macro command.
  253.    "Use EMS for scrollback" determines whether RBcomm will allocate 32K
  254.       of expanded memory (if available) for the pager and scrollback
  255.       buffers.    If set to Y and at least 32K of EMS is available, RBcomm
  256.       will give you a 6K pager buffer and 26K scrollback buffer regardless
  257.       of the next two settings.
  258.    "Size of non-EMS pager buffer" determines how much memory RBcomm will
  259.       allocate for the file pager's buffer when EMS is not available or
  260.       has been disabled.  Larger values can improve the pager's performance
  261.       on files with long lines, but values greater than 6-8K will not have
  262.       much of an effect unless you have an extremely large screen.  Values
  263.       smaller than the number of characters on the screen will cause
  264.       significant slowdowns when viewing files or displaying a directory,
  265.       due to thrashing as RBcomm constantly re-reads data.
  266.    "Size of non-EMS scrollback buffer" determines how much memory RBcomm
  267.       will set aside for storing text received from the serial port.  As
  268.       new text comes in, the oldest will be discarded.    Whatever text is
  269.       in the scrollback buffer may be viewed with Alt-O.
  270.  
  271. On choosing "Quit" from the menu, you will be asked whether to save the
  272. new configuration to disk.  If you specify that you want to save the changes,
  273. the executable on disk will be updated.
  274.  
  275. ---------------------
  276. DESQview Installation
  277. ---------------------
  278.  
  279. After performing the file copy and configuration described in the
  280. previous section, you need to install RBcomm on the DESQview Open
  281. Window menu.  In DESQview, tap the Alt key to bring up the DESQview
  282. menu, then press "O" for the Open Window menu, and "AP" to add a
  283. program.  Select "Other", then fill in the directory in which you've
  284. placed the RBcomm files and press Enter.  You will be given the choice
  285. of RBcomm, RBcomm plus DSZ, and RBcomm 132col; select one or more and
  286. press Enter.  Now use "CP" from the Open Window menu to change the
  287. paths and/or the keys for starting RBcomm.
  288.  
  289. The only difference between "RBcomm" and "RBcomm + DSZ" is that the
  290. former allocates the minimum amount of memory for RBcomm to run (46K),
  291. which is not enough to invoke DSZ, but does save 19K when you do not
  292. need file transfer capability.  Should RBcomm complain about
  293. insufficient memory (the window exits almost instantly), decrease the
  294. heap size on the "Other options" menu in RBCONFIG.  If your environment
  295. is particularly large, you may need to use Change a Program to increase
  296. the window sizes by a K or two.  With certain screen sizes, you may
  297. also need to give RBcomm 1K of system memory (on the advanced options
  298. screen).
  299.  
  300. To get a 132-column display under DESQview, configure RBcomm to use
  301. 132-column mode and then make a .DVP file using "Change a Program"
  302. which has all fields except for "maximum width" set to the desired
  303. values.  Change a Program only allows 127 columns in the window, so
  304. choose an arbitrary size smaller than that.  After pressing Enter to
  305. save the .DVP, run the included DVPWIDTH program to change the maximum
  306. width to 132 columns, i.e.
  307.     DVPWIDTH 132 RZ-PIF.DVP 
  308. You must give the full name of the .DVP file, including the extension.
  309. Note that Change a Program will force you to change the window's width
  310. if you have set the width greater than 127 and run Change a Program
  311. again.
  312.  
  313. If you do not wish to use the DVPWIDTH program, or your version of
  314. DESQview experiences difficulties with a 132-column setting in the .DVP
  315. file, RBcomm can still use 132-column windows through an alternate
  316. method.  For this alternative, you must give it enough "system memory"
  317. to store the entire maximum-size screen.  Whatever memory is used to
  318. store the initial screen size set under "Window Position" is then
  319. wasted, so that size should be set fairly small (such as 15 columns by
  320. the desired number of rows).  If you are not interested in the reason,
  321. skip the rest of this paragraph.  DV normally reuses the same section
  322. of memory when resizing the virtual screen.  However, resizing it
  323. beyond the maximum defined by the .DVP causes an entire new buffer to
  324. be allocated.  Thus, minimizing the "maximum screen size" also
  325. minimizes the DESQview overhead by reducing the size of the screen
  326. buffer which gets discarded.
  327.  
  328. RBcomm is sufficiently DESQview-aware to ask DV for the size of the
  329. screen. If you want a 120x60 screen, just set the maximum window size
  330. to 120 columns and 60 rows.  DESQview will display as much as it can on
  331. your screen, but RBcomm will use the full size.  If you have enabled
  332. 132-column mode with RBCONFIG, RBcomm will also switch to 132 columns
  333. by the given number of rows when it receives the sequence "<Esc>[?3h".
  334.  
  335. RBcomm refuses to load itself twice on the same serial port when
  336. running under DESQview.  However, when shelled to DOS, you can load
  337. another copy in a different window, but make sure to exit the second
  338. copy before returning from the DOS shell, or the first copy will abort.
  339. The method RBcomm uses is compatible with ONLY1.SHP using the names
  340. "COM1" through "COM4" (depending on the serial port), so you can also
  341. keep RBcomm from conflicting with other programs that use a serial
  342. port, such as BBS mailers.
  343.  
  344. Finally, RBcomm returns the rest of its time-slice to DV if it doesn't
  345. need a full slice.  This improves the performance of programs in other
  346. windows, and makes supplemental programs such as TAME unnecessary (as
  347. phrased by TAME's author, RBcomm is "DV-polite").
  348.  
  349. -----------------------------------------------------------------------------
  350. Dialing Directory
  351. -----------------
  352.  
  353. The dialing directory is a specially formatted data file (rather than a
  354. plain text file) containing up to 250 entries.  This data file may be
  355. created and maintained with RBCONFIG (see Editing the Dialing Directory
  356. below).
  357.  
  358. For the convenience of those using RBcomm version 3.31 or earlier, or
  359. those wishing to distribute dialing entries for other RBcomm users,
  360. RBCONFIG has the capability to compile a plain text file into an RBcomm
  361. dialing directory.  In the plain text file, each dialing entry consists
  362. of two lines, looking like this, with no blank lines between entries:
  363.  
  364.     Doctor's WOC Inn
  365.     14126214604|4800N81|B|OPUS|password|\\N2
  366.  
  367. The first line contains the description which will be used on the dialing
  368. directory screen and when dialing.  The second line contains six fields
  369. separated by vertical bars.  These fields are
  370.  
  371.      1. number to dial (direct connection if empty)
  372.      2. modem parameters, containing in order
  373.       baud rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,
  374.              57600, 115k)
  375.       parity    (N for none, E for even, O for odd, S for space,
  376.              M for mark)
  377.       data bits (5, 6, 7 or 8)
  378.       stop bits (1 or 2)
  379.       handshake to use when receive buffer is full
  380.             (H for hardware RTS/CTS, X for software XON/XOFF)
  381.             (optional, default is hardware)
  382.       timed call flag
  383.             (if handshake present and the character after the handshake
  384.              is T, a short "bip" will sound about 50 seconds into each
  385.              minute after establishing a connection.  Every five
  386.              minutes, the "bip" sounds twice)
  387.       serial port number
  388.             (if handshake is present, following either the handshake
  389.              character or the "T" timed call flag with a comma and
  390.              the number of the serial port will tell RBcomm to switch
  391.              to that port before dialing)
  392.      3. terminal emulation
  393.       A for ANSI with VT102 extensions
  394.       B for ANSI-BBS (same as ANSI, but clearing screen also homes cursor,
  395.               and character set switching is disabled)
  396.       V for VT52 with H19 extensions
  397.      4. keyboard macro file to load
  398.      5. password for this system (used by PASSWORD macro command).  Display of
  399.       passwords in the dialing directory may be turned on or off with
  400.       RBCONFIG.
  401.      6. optional modem setup string, minus command lead-in defined by RBCONFIG
  402.       (may include vertical bars).    In the example above, the \\N2 tells
  403.       my modem to use MNP error correction.
  404.  
  405. If the keyboard macro file field is non-empty, the specified file will
  406. be loaded immediately upon successfully connecting with the remote
  407. system.  Since each entry in the dialing directory can specify an
  408. independent set of keyboard macros, you can have a different set of
  409. keyboard bindings for each system. If the macro file specifies a
  410. binding for the ONLOAD "key", that macro will be executed immediately.
  411. Further, if the macro file specifies a binding for the AUTO "key", that
  412. macro will be executed immediately after the ONLOAD macro (if any).
  413.  
  414. The setup string may contain the following special sequences:
  415.     ~    pause for half a second
  416.     \n   send a line feed
  417.     \r   send a carriage return
  418.     \f   send a form feed
  419.     \t   send a horizontal tab
  420.     \a   send a ^G
  421.     \b   send a backspace
  422.     \!   send a break
  423.     \~   send a tilde
  424.     \\   send a backslash
  425.  
  426. Example modem parameters:
  427.     1200E71X     default COM port, 1200 bps, even parity, seven data
  428.              bits, one stop bit, use Xon/Xoff handshake when
  429.              receive buffer fills up
  430.     19200N81HT,2     COM2, 19,200 bps, no parity, eight data bits, one
  431.              stop bit, use hardware handshake, and sound off
  432.              every minute
  433.  
  434. Compiling the Dialing Directory
  435. -------------------------------
  436.  
  437. Once you have created a plain-text dialing file, you must compile it
  438. into the binary form used by COMM.COM.  The directory compiler is
  439. invoked with
  440.     RBCONFIG DIAL [-C<port>] <filename>
  441. where <filename> is the name of the dialing directory to compile and
  442. <port> is a number from 1 to 4 specifying which serial port is the
  443. default port when none is explicitly given in the file.  Any extension
  444. given with the filename is ignored; the text file always has the
  445. extension .DIR and the compiled binary file has the extension .RBD.
  446.  
  447. If you want to add entries from a dialing file to the dialing directory
  448. rather than creating a dialing directory from scratch, you can append
  449. new entries to an existing directory with
  450.     RBCONFIG DIAL [-A<port>] <dialdir> <filename>
  451.  
  452. Editing the Dialing Directory
  453. -----------------------------
  454.  
  455. To interactively edit a dialing directory, use
  456.     RBCONFIG DIAL [-E] <dialdir>
  457.  
  458. You may wish to read the section on the format of a plain-text dialing
  459. file for information on the various options, and the special characters
  460. you may use in the initialization string.
  461.  
  462.  
  463. -----------------------------------------------------------------------------
  464. Environment Variables
  465. ---------------------
  466.  
  467. RBcomm uses the following variables in its environment:
  468.  
  469. COMSPEC      specifies which program to load for Shell-to-DOS (Alt-D) and
  470.       Execute-Program (Alt-G).
  471.  
  472. RBCOMM      specifies default commandline options (which may be overridden by
  473.       the commandline).  See below for the valid options.  Note that only
  474.       the first 160 bytes will be used due to internal space limitations.
  475.  
  476. SWAPDIR      overrides the default swap directory, where RBcomm stores itself
  477.       when swapping to disk.
  478.  
  479. -----------------------------------------------------------------------------
  480. Commandline Options
  481. -------------------
  482.  
  483. RBcomm may be invoked with one or more options, described below.  These
  484. options are processed from left to right; if an option is present
  485. multiple times, the rightmost instance will be the one in effect.  The
  486. options in the RBCOMM environment variable (if present) are processed
  487. before the commandline, and thus are overridden by the commandline.
  488. Options are not case-sensitive.
  489.  
  490.     -B    use BIOS calls to display characters received from the
  491.         serial port (aka 'port check writes').  RBcomm's own
  492.         menus and messages will still use direct screen writes.
  493.         This option is primarily for the convenience of people
  494.         using screen readers.
  495.  
  496.     -Cn    select COMn, where 'n' may be 1 to 4.  This option
  497.         overrides the default set with RBCONFIG.
  498.  
  499.     -Ddir    set the RBcomm directory to 'dir'.  This option overrides
  500.         the RBCONFIG default.
  501.  
  502.     -Mfile    set the default macro file to use whenever not connected
  503.         to a remote system.  This option overrides the RBCONFIG
  504.         default.  Only the first 8 characters are used.
  505.  
  506.     -Nfile    set the RBcomm dialing directory to 'file'.  This option
  507.         overrides the RBCONFIG default; it replaces the RBCDIAL
  508.         environment variable used by prior releases.  Only the
  509.         first 12 characters are used; if no extension is given,
  510.         it defaults to .RBD.
  511.  
  512.     -Pparm    force default parameters for the current serial port.
  513.         Instead    of reading the port's parameters, RBcomm will
  514.         set them to the value specified here.  'parm' is in the
  515.         same format as used in the dialing directory, except
  516.         that the port number is not allowed.  You may intersperse
  517.         -C and -P options to set forced parameters for more than
  518.         one port.
  519.  
  520.     numlst    a list of numbers to dial as if typed at the dialing
  521.         directory (see Alt-Q below) prompt.  Each number must
  522.         be separated from the next by a comma.  No blanks are
  523.         allowed, as they signal the end of an argument on the
  524.         command line.
  525.  
  526. -----------------------------------------------------------------------------
  527. Memory Requirements
  528. -------------------
  529.  
  530. RBcomm's memory usage is approximately
  531.  
  532.      39.3K + heap size + screens + pager buffer + scrollback buffer
  533.  
  534. where
  535.      screens = number_of_screens * (max_size + 352)
  536.      max_size = greater of (2*rows*columns) for 80 and 132-column modes
  537.      pager buffer and scrollback buffer are both 0 if allocated in EMS
  538.  
  539. If there is insufficient memory, the scrollback buffer is shrunk; if there
  540. is still not enough memory, the pager buffer is shrunk as well.
  541.  
  542. -----------------------------------------------------------------------------
  543. Keyboard Commands
  544. -----------------
  545.  
  546. The commands described here may be bound to other keys, but the default
  547. keystroke named here may always be used when preceded by Alt-= (hold down
  548. the Alt key and press the equal sign at the upper right of the typewriter
  549. section of the keyboard).
  550.  
  551. Alt-A    attack dial
  552.  
  553.     Repeatedly dials the number you select from the dialing directory
  554.     until a connection is established.  You may also manually enter a
  555.     number to attack-dial.
  556.  
  557. Alt-B    send break
  558.  
  559. Alt-C    call a number
  560.  
  561.     Dial the number you select from the dialing directory (once only).
  562.     You may also manually enter a number to dial.  If you are currently
  563.     connected to another system, you will be prompted whether to hang
  564.     up.  Press Esc to abort the dial and return to the current session.
  565.     Press "Y" to disconnect and then dial a new number, or "N" to maintain
  566.     the current connection and load new macros and parameters without
  567.     dialing.
  568.  
  569.     Note that the modem parameters always have an "H" appended when neither
  570.     "H" nor "X" is present in the dialing directory, since the handshake
  571.     defaults to hardware.
  572.  
  573.     See also Alt-Q.
  574.  
  575. Alt-D    DOS shell
  576.  
  577.     Temporarily exit to DOS.  Type "EXIT" to return to comm session.
  578.     RBcomm will swap itself out of memory, leaving only 448 bytes plus
  579.     its copy of the environment in memory (464 bytes when swapping to
  580.     EMS).  When swapping to disk, a 46K-96K swap file will be created
  581.     in the directory you specified with RBCONFIG, and will be deleted
  582.     when you return to the comm session.  File transfers also create
  583.     the temporary swap file.
  584.  
  585. Alt-E    toggle local echo
  586.  
  587.     By default, RBcomm assumes that the remote system will echo any
  588.     characters you need to see.  After pressing Alt-E once, RBcomm will
  589.     display any characters you type without requiring the remote system
  590.     to echo them.  After pressing Alt-E a second time, RBcomm will once
  591.     again assume that the remote system will echo characters.
  592.  
  593.     Note: you may also toggle local echo by pressing 'L' on the Alt-P
  594.     parameters menu.
  595.  
  596. Alt-F    list files
  597.  
  598.     Display a three-up listing of the files matching a given filespec.
  599.     This command uses the pager, whose commands are    listed in a separate
  600.     section below.    Note that while the pager can back up past the
  601.     beginning of its buffer, doing so can be slow for large directories.
  602.     Please be patient if the screen is not updated instantly while backing
  603.     up.
  604.  
  605. Alt-G    Go execute a program
  606.  
  607.     You will be prompted to enter a command.  Everything up to the first
  608.     blank is the program to execute, and the rest of the line is the
  609.     command tail to pass to the program.  If you do not specify an explicit
  610.     path, RBcomm will search your PATH for you; similarly, if you do not
  611.     give an explicit extension, RBcomm will look for both .COM and .EXE
  612.     files.
  613.  
  614.     (to execute a batch file or a COMMAND.COM internal command, you should
  615.     use
  616.          "%VCOMSPEC% /c cmd"
  617.     as the implicit COMMAND.COM invocation from earlier releases has been
  618.     removed)
  619.  
  620. Alt-H    hang up
  621.  
  622.     Terminate the connection.  First drops DTR, and if Carrier Detect is
  623.     still active, sends the modem's hangup string.    The default macro set
  624.     is reloaded from disk (if present) or from the built-in defaults.
  625.     If the CLEANUP "key" has a macro binding, it is executed before
  626.     hanging up; if it includes the LOWER_DTR command, DTR will remain
  627.     dropped.
  628.  
  629. Alt-I    idle
  630.  
  631.     This command allows you to keep a connection alive if you need to step
  632.     away from your computer for a while.  Sends a space followed by a
  633.     backspace every two minutes (configurable with RBCONFIG) until you
  634.     press a key to cancel the command.
  635.  
  636. Alt-J    jump to directory
  637.  
  638.     Pops up a window displaying the current directory.  You may switch to
  639.     a different directory by entering it in place of the displayed
  640.     directory.  Relative paths without a leading slash or backslash will
  641.     change to a subdirectory of the current directory.  If you specify a
  642.     drive letter, that drive will become the current drive as well.
  643.  
  644. Alt-K    unused
  645.  
  646. Alt-L    toggle logging to file
  647.  
  648.     When pressed the first time, you will be asked for the name of a file
  649.     to which all characters received from the remote system will be
  650.     appended (percent signs introduce variable expansions--see the EXEC
  651.     and OPEN_LOG commands below).  When pressed the second time, RBcomm
  652.     will no longer append received characters to that file.     If verbose
  653.     (see Alt-Y) is active, all characters will be appended exactly as
  654.     received, otherwise any command sequences embedded in the received
  655.     data are stripped out.
  656.  
  657. Alt-M    learn macro string
  658.  
  659.     When you press Alt-M, you will be asked to enter a text string of up
  660.     to 79 characters, using the same editing keys used elsewhere.  This
  661.     text string may be replayed with Alt-N.
  662.  
  663. Alt-N    play back macro string
  664.  
  665.     Plays back the last string recorded with Alt-M, sending it to the
  666.     remote system.
  667.  
  668. Alt-O    scrOllback
  669.  
  670.     This command pops up the scrollback pager, allowing you to review
  671.     text which has already scrolled off the screen.     The keystrokes
  672.     which the pager understands are listed in a separate section below.
  673.     In addition, 'M' marks the top of the currently displayed screenfull 
  674.     as the beginning of the region to write when 'W' is pressed.  After
  675.     pressing 'W', you will be prompted for a filename.  The section of
  676.     the scrollback buffer between the marked top (default: beginning of
  677.     buffer) and the bottom of the currently displayed screen is appended
  678.     to the specified file.
  679.  
  680. Alt-P    set parameters
  681.  
  682.     This command pops up a menu which allows you to set the following
  683.     parameters:  COM port, speed, parity, parity stripping, handshake,
  684.     backspace translation, visual bell, and terminal emulation.  You may
  685.     also reset the terminal emulation to its initial state, in case the
  686.     remote system leaves you stranded in a strange condition.  Press Esc,
  687.     Enter, or 'R' to exit this menu.
  688.  
  689.     Note that Alt-P will discard any characters which have been received
  690.     but not yet processed, because it always reinitializes the serial
  691.     port when it pops down.
  692.  
  693. Alt-Q    dial queue of numbers
  694.  
  695.     Repeatedly dials each number you specify until a connection is
  696.     established with one of the numbers.  The numbers are dialed in
  697.     round-robin fashion until a connection is established.    A beep will
  698.     sound to notify you of the connection, and the name of the remote
  699.     system and the modem's connect response will be displayed.
  700.  
  701.     If there were multiple numbers in the previous dialing attempt,
  702.     Alt-Q will immediately continue dialing the numbers which to which
  703.     RBcomm has not yet successfully connected.
  704.  
  705.     You specify the entries to dial by giving the numbers as they appear
  706.     in the dialing directory, separated by commas or blanks.  A number
  707.     may be specified more than once, and will be dialed more than once
  708.     during a round of dialing attempts.  As a shortcut, you may separate
  709.     two numbers by a dash to dial all numbers in the range, inclusive.
  710.  
  711. Alt-R    receive file
  712.  
  713.     Pops up a menu allowing you to select the protocol with which you wish
  714.     to receive a file from a remote system.     Press ESCape if you do not
  715.     wish to receive a file.     Note that Zmodem features automatic download,
  716.     so you do not need to press Alt-R unless you wish to give DSZ
  717.     additional parameters.    You may also add additional autodownloading
  718.     protocols--see the WHEN macro command in the next section.
  719.  
  720.     Not listed on the menu:     ^G, ^Y, and ^Z pop up a parameter prompt,
  721.     then proceed with the download specified by the corresponding
  722.     non-control letter.
  723.  
  724. Alt-S    send file
  725.  
  726.     Pops up a menu allowing you to select the protocol with which you wish
  727.     to send a file to a remote system.  Press ESCape if you do not wish to
  728.     send a file.  After selecting a protocol, you will be asked to enter
  729.     the name of the file to send (Ymodem, Ymodem-G, and Zmodem allow
  730.     wildcards and multiple filespecs).
  731.  
  732.     If you press the control character corresponding to the desired
  733.     protocol, the file(s) will be deleted after a successful transfer.
  734.     For batch transfers, only the files corresponding to the first
  735.     filespec are deleted.
  736.  
  737. Alt-T    type ASCII file to other system
  738.  
  739.     sends an ASCII file to the remote system, pausing after each line
  740.     for the return to be echoed.  The send may be aborted at any time
  741.     by pressing Escape.  The EXPAND_BLANK macro command may be used
  742.     to turn on blank-line expansion (send a single space instead of
  743.     blank lines).  This feature is off by default.
  744.  
  745. Alt-U    load/save user interface as defined in keyboard macro file
  746.  
  747.     Note that keyboard macro files are always stored in the RBcomm
  748.     directory as defined by RBCONFIG.
  749.  
  750.     WORDSTAR.RBM and EMACS.RBM contain the keyboard definitions for using
  751.     WordStar (tm) and Emacs cursor movement commands on the cursor pad
  752.     (i.e. Home goes to the start of the line, etc.)     EMACS.RBM also binds
  753.     all Alt-letter keys to be Esc-letter, making the Alt key into a true
  754.     Emacs meta-key.     You will need to use the Alt-= override to use the
  755.     RBcomm commands while EMACS.RBM is loaded.
  756.  
  757. Alt-V    View file
  758.     (toggle verbose, which used to be on Alt-V, is now on Alt-Y)
  759.  
  760.     Page through a text file.  This uses a simple file lister which
  761.     only understands a few keystrokes; they are listed in a separate
  762.     section below.
  763.  
  764. Alt-W    select Which screen is visible
  765.  
  766.     Displays a menu of the available screens.  Press the indicated
  767.     number to make that screen the visible screen.    If UnixWindows
  768.     is not enabled, the selected screen will also be made the
  769.     active screen (characters received from the serial port are
  770.     displayed on the active screen).  Under UnixWindows, the
  771.     visible and active screens may be different, as the active
  772.     screen is set by commands from the remote system; thus, only
  773.     the visible screen is set by this command.
  774.  
  775. Alt-X    exit
  776.  
  777.     Terminate RBcomm.  If you are still connected to the remote system
  778.     (Carrier Detect asserted), you will be asked whether or not to hang
  779.     up.
  780.  
  781. Alt-Y    toggle verbose
  782.     (previously Alt-V)
  783.  
  784.     Toggles the verbose mode used with Alt-L.  When not logging, the
  785.     control characters which are not used for terminal commands will be
  786.     displayed as ^X when received from the remote system.  When logging to
  787.     a file, terminal command sequences will only be stored in the log file
  788.     if verbose mode is ON.
  789.  
  790. Alt-Z    send file with Zmodem
  791.  
  792.     This command will send the specified file(s) using the Zmodem
  793.     protocol.
  794.  
  795. Alt-1,2,3,4,5,6,7,8,9,0     dial first ten numbers in dialing directory
  796.  
  797. Alt-F1 through Alt-F10     dial 11th through 20th number in dialing directory
  798.  
  799. F1    pop up help screen
  800.     
  801.     Displays the contents of the help file for the current macro file
  802.     (if that file is not found, RBcomm attempts to use RBCOMM.HLP).
  803.     Press an Alt or function key to execute the default binding for the
  804.     key.  Escape exits immediately, and any other key pages through the
  805.     help file (if more than 20 lines long).
  806.  
  807. Alt--    cancel any pending WHEN, DELAYED, or WINDOW commands
  808.  
  809. Alt-=    use default binding of next keystroke
  810.  
  811.     If the keyboard has been redefined, pressing Alt-= will allow you to
  812.     access the built-in default definitions (as listed in this section).
  813.     Press Alt-= and then immediately press the key whose default
  814.     definition you want to use.  As a result, Alt-= is the only keystroke
  815.     which may not be redefined.
  816.  
  817. -----------------------------------------------------------------------------
  818. Line Editor
  819. -----------
  820.  
  821. Whenever you are prompted for a line of input, you may use the following
  822. keys to edit the line:
  823.  
  824.     Esc    abort
  825.     Return    finish input
  826.     Home    move to start of line
  827.     ^A    move to start of line
  828.     End    move to end of line
  829.     Right    move a character right
  830.     ^D    move a character right
  831.     Left    move a character left
  832.     ^S    move a character left
  833.     ^Right    move word right (to next blank)
  834.     ^Left    move word left (to previous blank)
  835.     Del    delete the character under the cursor and shift remainder of
  836.         line left
  837.     Backsp    delete the character to the left of the cursor, and shift the
  838.         remainder of the line left
  839.     Alt-G    delete the word to the right of the cursor
  840.     Alt-H    delete the word to the left of the cursor
  841.     ^End    delete from the cursor to the end of the line
  842.     ^T    transpose the two characters to the left of the cursor
  843.     Alt-D    insert an ASCII DEL (127) character
  844.     Alt-P    insert the contents of the cut buffer
  845.     ^Q    treat the next keystroke as a literal character to insert
  846.  
  847. -----------------------------------------------------------------------------
  848. Pager
  849. -----
  850.  
  851. The pager is used to display directories, files, help screens, and the
  852. scrollback buffer.  It is fairly simple, supporting the following
  853. keystrokes:
  854.  
  855.     Up    move up one line
  856.     Down    move down one line
  857.     PgUp    move up one screenfull
  858.     PgDn    move down one screenfull
  859.     Space    move down one screenfull, exiting if already at end of
  860.         file/directory/buffer.
  861.     Right    (files/scrollback only) shift the left margin right by eight
  862.         spaces, allowing you to view lines extending past the right
  863.         edge of the screen.  When the left margin is other than
  864.         zero, the indent is shown at the right edge of the status
  865.         line.
  866.     Left    (files/scrollback only) shift the left margin left by eight
  867.         spaces if it is not already zero.
  868.     Home    restart the pager.  For files and directories, you will
  869.         be put back at the beginning of the file; for the scroll-
  870.         back buffer, you will be placed at the end of the buffer.
  871.     Esc    exit from the pager.
  872.  
  873. The scrollback pager adds the following keys to the above standard keys:
  874.     M    mark the top of the region to write to a file
  875.     W    write the marked region to a file
  876.  
  877. The dialing directory adds the following keys:
  878.     0-9    start entering the number(s) to dial
  879.     M    specify a telephone number to dial manually
  880.     R    recall the last list of numbers to dial
  881.  
  882. -----------------------------------------------------------------------------
  883. Error Messages
  884. --------------
  885.  
  886. file not found
  887.     RBcomm was unable to open the requested file.  This may be due to
  888.     wildcards or a misspelling in the filename, an invalid path,
  889.     a lack of file handles (see FILES= in your DOS manual), or a file
  890.     sharing conflict.
  891.  
  892. invalid macro file
  893.     the macro file you wanted to load is either corrupted or from a
  894.     different version of RBcomm which uses an incompatible format for
  895.     macro files.  Try recompiling the macro file with the same version
  896.     of the compiler as the version of RBcomm you are using.
  897.  
  898. MODEM NOT RESPONDING
  899.     RBcomm did not get an acknowledgement from the modem within four
  900.     seconds of the last command.  If you only get this message on attack
  901.     or list dialing, you need to increase the delay before redialing
  902.     with RBCONFIG (under "dialing parameters")--some modems take longer
  903.     to reset after a hangup command than others.
  904.  
  905. --out of memory--
  906.     There was not enough memory to pop up the requested menu or prompt.
  907.     Increase the heap size with RBCONFIG and try again.
  908.  
  909. STACK FULL
  910.     Your macro was so deeply nested that it ran out of space.  This can
  911.     be caused by an infinite recursion in your macro.  Increase the heap
  912.     size with RBCONFIG (under "Other options") and try again.
  913.  
  914. -----------------------------------------------------------------------------
  915. Warnings
  916. --------
  917.  
  918. Don't try to load a TSR while shelled to DOS.  RBcomm won't be able to swap
  919. itself back in and will have to abort.    Your connection will not be broken,
  920. however.
  921.  
  922. Don't mess with the swap file while shelled.  You'll be sorry....  (RBcomm
  923. is able to detect a missing or truncated swap file on returning, but not
  924. other changes)
  925.  
  926. IMPORTANT:  if you are swapping to a floppy drive, DO NOT UNDER ANY
  927. CIRCUMSTANCES replace that floppy disk while shelled to DOS or running a
  928. file transfer.    You will definitely trash the file allocation tables and
  929. directory of the second disk.  This is a problem with DOS itself (at least
  930. through 3.10, later versions may have corrected it) when faced with a
  931. diskette change while a file is open on the diskette which gets removed.
  932. The swap file is such an open file.
  933.  
  934. -----------------------------------------------------------------------------
  935. Known Bugs and Limitations
  936. --------------------------
  937.  
  938. If you are using a serial port which the BIOS does not recognize, RBcomm
  939. will most likely read garbage parameters from the port at startup, requiring
  940. you to set the parameters by hand with Alt-P or the -P commandline option.
  941.  
  942. The pager has trouble with extremely long lines (>500 columns or so).
  943. When encountering such a line, you may not be able to move up or down by
  944. single lines.  PgUp and PgDn will still work, however.
  945.  
  946. RBcomm requires that the EMS page frame contain at least three pages
  947. in order to use EMS for the scrollback and pager buffers, and at least
  948. one page in order to swap to EMS.  This is important when running under
  949. memory managers such as QEMM-386 which allow page frames smaller than
  950. the standard four pages.
  951.  
  952. -----------------------------------------------------------------------------
  953. Macro Compiler
  954. --------------
  955.  
  956. Syntax:     MACRO srcfile [srcfile ...]
  957. compiles each of the specified source files in turn to a macro file
  958. with the same name and the extension .RBM.  If no extension is
  959. specified for a source file, the default of .MAC is used.
  960.  
  961. Important Note:
  962.     RBcomm v3.4 and later macro files are INCOMPATIBLE with
  963.     earlier versions.  You must recompile all your macro files
  964.     if RBcomm complains about invalid macro files.
  965.  
  966. -------------------
  967. Macro File Commands
  968. -------------------
  969.  
  970. Each command has the following form:
  971.  
  972.     keyname     commandword   [args]
  973.  
  974. where keyname specifies to which key the command is to be bound.  Keynames
  975. (which are not case-sensitive) are:
  976.     F1 through F12 for the function keys
  977.        +F1 through +F12 for the shifted function keys
  978.        ^F1 through ^F12 for the control function keys
  979.        @F1 through @F12 for the alt-function keys
  980.        @A through @Z for the alt-letter keys
  981.        @1 through @0 for the alt-digits
  982.        Gray+, Gray-, Gray*, Gray/ for plus, minus, star, slash keys on keypad
  983.        @Plus and @Minus, @Gr*, @Gr/ for Alt-Gray+, Alt-Gray-, Alt-Gray* and
  984.        Alt-Gray/
  985.        Left, Right, Up, Down for the cursor keys on the numeric pad
  986.        Home, End, PgUp, PgDn, Ins, and Del for the other keypad keys
  987.        KP5 for the '5' key on the number pad (enhanced keyboard)
  988.        ^Home, etc. for the control versions of the numberpad keys
  989.        CP_Home     Home key on gray cursor pad
  990.        CP_Up     Up arrow on gray cursor pad
  991.        CP_Down     Down arrow on gray cursor pad
  992.        CP_Enter     Enter key on cursor pad
  993.         etc.
  994.        @Left, @Right, @Up, @Down, @Home, @End, @PgUp, @PgDn, @Ins, @Del for
  995.        Alt- versions of the cursor pad keys
  996.        ^Left, ^Right, etc for Ctrl- versions of the cursor pad keys
  997.        ^Break     for control-break
  998.        @- @= @[ @\ @] @; @' @, @. @/ @` @* for various other Alt-keys
  999.  
  1000. There are also some pseudo-keys to which you may assign a macro:
  1001.        "OnLoad" is executed any time the macro file is loaded into memory
  1002.        "AutoDL" is executed whenever the autodownload mechanism is
  1003.         initialized.  See the AUTO_XFER command for details.
  1004.        "Auto" is executed automatically when a connection is established
  1005.        "Reconnect" is executed automatically when reconnecting without
  1006.         hanging up and redialing
  1007.        "CleanUp" is executed when hanging up if carrier detect is active
  1008.        "OnAbort" is executed whenever a macro other than OnAbort aborts and
  1009.         displays the **ABORTED** message, just prior to displaying
  1010.         the message
  1011.        "Alarm" is executed whenever a connection is established with a remote
  1012.         system or when a file transfer (including TYPEing a file)
  1013.         completes.  If not bound, a simple beep is generated.
  1014.  
  1015. And there is a no-operation pseudo-key for use by FORCE_CLEANUP:
  1016.        "Null" does nothing and returns immediately
  1017.  
  1018. Finally, there are two sets of pseudo-keys which can be used to
  1019. override the default settings for file transfers.
  1020.     "#upload_x" will override the command string for the upload
  1021.         protocol with letter 'x' on the upload menu.
  1022.         Format:  #upload_z "upload command string"
  1023.     "#download_x" will override the command string for the download
  1024.         protocol with letter 'x' on the download menu.
  1025.         Format:  #download_z yes|no "download command string"
  1026.         The first parameter indicates whether or not RBcomm
  1027.         should prompt the user for a filename or parameters
  1028.         (which may be inserted in the download command using
  1029.         the %F substitution--see EXEC).
  1030.  
  1031. You may assign macros to control keys by specifying "^x" as the key name,
  1032. where "x" is the control key you want to use.  Similarly, you may assign a
  1033. macro to a regular key by preceding the character representing the key by a
  1034. backslash (i.e. \A for capital 'A', \a for lowercase 'a'). Note that macros
  1035. are never in effect when you are prompted for information by RBcomm; they
  1036. only affect what (if anything) gets sent to the remote system.
  1037.  
  1038. Finally, you may use "#nnn" where nnn is the decimal scancode of the key
  1039. to which you wish to assign the macro (values of 224 through 255 are reserved,
  1040. 167 through 223 are currently unused by any key combinations supported by
  1041. the IBM ROM BIOS).
  1042.  
  1043. Note that the cursor pad keys will execute the binding for the
  1044. corresponding number pad key if not specifically bound (but not vice
  1045. versa).     CP_Enter defaults to the binding for @Enter.
  1046.  
  1047. The commandword is not case-sensitive, but you must include the underscore
  1048. if present and use the entire commandword (abbreviations are not
  1049. supported).
  1050.  
  1051. With the exception of the ANSWERBACK, TEST, TEXT, WAITFOR, and WHEN
  1052. commands, all commands which take a string argument pop up a prompt if the
  1053. string is empty (i.e. "").  Strings may include the following special
  1054. sequences:
  1055.     ^x   specified control character
  1056.     ^?   ASCII DEL (127)
  1057.     \a   ^G (bell)
  1058.     \b   backspace
  1059.     \e   escape
  1060.     \f   form feed
  1061.     \n   line feed
  1062.     \r   carriage return
  1063.     \t   horizontal tab
  1064.     \v   vertical tab
  1065.     \\   backslash
  1066.     \^   carat
  1067.     \0   ASCII NUL (for TEXT command only)
  1068. For character arguments, you may specify either
  1069.     'c'
  1070. where the character c is interpreted as for a string, or you may specify its
  1071. ASCII value.
  1072.  
  1073. Everything from a semicolon (unless it is in a string) to the end of the line
  1074. is considered a comment, as are blank lines.
  1075.  
  1076. If a line starts with #include rather than a key name, the specified file
  1077. will be compiled into the macro file as if it were part of the current text
  1078. file.  Note that the string is processed just like any other strings, so
  1079. that you must double any backslashes (or use forward slashes, instead).
  1080. Format:
  1081.     #INCLUDE  "d:/path/filename"
  1082. an extension of .MAC is assumed if no extension is given, and the drive
  1083. letter and path are optional (default is current drive and directory).
  1084. #INCLUDEs may be nested up to twelve deep.
  1085.  
  1086. If a line starts with #ignore rather than a key name, any subsequent
  1087. occurrences of the keyname following the #ignore will be ignored, just as
  1088. if you had already defined a binding for the key.  This is useful when
  1089. #include'ing a file if you do not want all the bindings in the included
  1090. file.
  1091. Format:
  1092.        #IGNORE    <keyname>
  1093.  
  1094. For readability, you may give names to extended keys with the
  1095.        #DEFKEY <newname> <keynumber>
  1096. command.  For example, "#defkey Proc1 199" will let you refer to
  1097. "Proc1" and "#199" interchangeably.
  1098.  
  1099. ABORT
  1100.     abort the current macro or operation as if the user had pressed Esc.
  1101.  
  1102. ABORT_UNTIL
  1103.     Abort any currently executing UNTIL command after the command(s) it
  1104.     controls complete.  If multiple UNTIL commands are nested, each is
  1105.     aborted as the commands it controls complete, until all pending
  1106.     UNTILs have been aborted.  Useful mainly in conjunction with the
  1107.     DELAYED command to provide a timeout on UNTIL loops.
  1108.  
  1109.     See also DELAYED, UNTIL.
  1110.  
  1111. ALARM
  1112.     Execute the macro bound to the "Alarm" pseudo-key.  If Alarm is not
  1113.     bound, this command is equivalent to BEEP.
  1114.  
  1115.     See also BEEP, SOUND.
  1116.  
  1117. ANSWERBACK "string"
  1118.     sets the answerback message to the specified string.  If the string is
  1119.     empty (i.e. ""), answerback is disabled (making ^E a cursor-positioning
  1120.     command), otherwise, answerback is enabled.
  1121.  
  1122. AT hh:mm:ss
  1123.     execute the following line (or lines if a MULTI) at the specified
  1124.     time.  If the specified time is less than the current time, the
  1125.     command(s) will be executed the next day.  The seconds may be
  1126.     omitted, in which case they default to 0.
  1127.  
  1128.     Note: the command(s) may actually execute later than requested if
  1129.       RBcomm is busy processing incoming characters at the time the
  1130.       command should execute.  The command will execute as soon as RBcomm
  1131.       empties its receive buffer.
  1132.  
  1133.     See also DELAYED.
  1134.  
  1135. AUTO_XFER
  1136.     reenable autodownloads/autouploads if they have been canceled by
  1137.     an ENDWHEN ALL_XFER.  If the AutoDL pseudokey has a binding, it
  1138.     is executed; otherwise, a default routine equivalent to
  1139.         WHEN 0 "**^XB00"
  1140.            RECEIVE 'Z'
  1141.     is executed.  The command ENDWHEN ALL is implemented as an
  1142.     ENDWHEN ALL_XFER followed by AUTO_XFER.
  1143.  
  1144.     Further, the dialer does an ENDWHEN ALL_XFER followed by an
  1145.     AUTO_XFER, so the AutoDL pseudokey will allow autodownloads to
  1146.     be preserved across a dial attempt which does not cause a new
  1147.     macro file to be loaded.
  1148.  
  1149.     The autodownloads are also reenabled with AUTO_XFER when hanging
  1150.     up and immediately after loading a new macro file.
  1151.  
  1152.     Note: Puma autodownload may be enabled with the following lines
  1153.     as part of the AutoDL pseudokey:
  1154.         WHEN 0 "^X^H^XPuma^X^H^X"
  1155.            RECEIVE 'P'
  1156.     Although I have not yet seen MPt (the renamed Puma), I understand
  1157.     that its autodownload string has changed, requiring
  1158.         WHEN 0 "^V^H^VMPt ^V^H^V"
  1159.            RECEIVE 'P'
  1160.  
  1161.     WARNING: do not invoke while autodownload is enabled, as you will wind
  1162.        up invoking a download multiple times for one download request....
  1163.  
  1164.     See also ENDWHEN, WHEN.
  1165.  
  1166. AVATAR ON|OFF
  1167.     Specify whether AVATAR command sequences should be honored by
  1168.     the terminal emulator.
  1169.  
  1170.     See also RBCOMM_CMDS.
  1171.  
  1172. AWAITKEY
  1173.     pause until a key is pressed.  The next function which reads a key
  1174.     will read the key which was pressed.  Returns immediately if there
  1175.     was any typeahead (including RBcomm's key stack).
  1176.  
  1177.     See also KFLUSH.
  1178.  
  1179. BEEP
  1180.     sound the bell.     Useful mainly in conjunction with the MULTI or
  1181.     DELAYED commands (see below).
  1182.  
  1183.     See also ALARM, SOUND.
  1184.  
  1185. BREAK
  1186.     send a break to the remote system
  1187.  
  1188. CALL keyname
  1189.     execute the macro (if any) bound to the specified key and then continue
  1190.     executing the current macro (if inside a MULTI).
  1191.  
  1192.     See also GOTO_KEY, PUSHKEY.
  1193.  
  1194. CANCEL_DELAYED which
  1195.     cancel the specified delayed action.  Currently supported:
  1196.            ALL    cancel all delayed actions
  1197.            LAST   cancel the last executed DELAYED.     If called a second
  1198.               time without an intervening DELAYED, the second call
  1199.               is ignored.
  1200.  
  1201.     See also DELAYED.
  1202.  
  1203. CANCEL_NOTIFY
  1204.     remove the notify window immediately instead of at the end of the
  1205.     configured period of time.
  1206.  
  1207. CHDIR "dir"
  1208.     change the DOS default directory to the specified directory.
  1209.  
  1210. CLOSE_LOG
  1211.     close the current log file.  If logging is off, this command has no
  1212.     effect.
  1213.     See also OPEN_LOG, TOGGLE_LOG.
  1214.  
  1215. CUT num dir "search"
  1216.     search the screen backwards from the current cursor position until
  1217.     the search string (case sensitive) is found, then copy "num"
  1218.     characters in the indicated direction (AFTER or BEFORE) to the cut
  1219.     buffer.     The contents of the cut buffer remain unchanged if the search
  1220.     string is not found (in which case the completion status is set to
  1221.     FAILED for testing by IF or UNTIL).  The cut buffer may be sent to
  1222.     the remote system with the PASTE command, inserted into a line
  1223.     being edited by pressing Alt-P, or inserted with the %C variable
  1224.     expansion.
  1225.  
  1226.     Note that trailing blanks are deleted from the cut buffer.  In
  1227.     addition, the CUT command treats the entire screen (even if a WINDOW
  1228.     command was used to restrict output to a portion of the screen) as a
  1229.     single long line, ignoring all line wrapping for both search and cut.
  1230.  
  1231.     Examples:
  1232.        Screen contains "1234test5678cursor here->" and the cursor is as
  1233.        indicated.  Then
  1234.         CUT 3 BEFORE "test"
  1235.        places "234" into the cut buffer, while
  1236.         CUT 6 AFTER "test"
  1237.        places "5678cu" into the cut buffer.     Further,
  1238.         CUT 7 BEFORE ""
  1239.        will place " here->" into the cut buffer.
  1240.  
  1241.     See also PASTE, TRIM.
  1242.  
  1243. DELAYED time
  1244.     execute the macro on the next line (or lines if it is a MULTI) the
  1245.     given amount of time from now.    You may have up to six delayed
  1246.     commands active at any given time.  The maximum delay time is 18
  1247.     hours; the macro compiler will complain if you attempt to use a
  1248.     greater delay.    Times are specified as
  1249.         seconds
  1250.         minutes:seconds
  1251.     or    hours:minutes:seconds
  1252.  
  1253.     Note: the command may actually execute later than requested if RBcomm
  1254.       is busy processing incoming characters at the time the command should
  1255.       execute.  The command will execute as soon as RBcomm empties its
  1256.       receive buffer.
  1257.  
  1258.     See also CANCEL_DELAYED, WHEN.
  1259.  
  1260. DIAL number redial
  1261.     dial the specified entry (0-39) from the dialing directory, or pop up
  1262.     the dialing directory if 'number' is PROMPT.  'redial' specifies how
  1263.     to dial:
  1264.         ONCE    make only one attempt
  1265.         ATTACK    try repeatedly until connected
  1266.         RECONNECT    make a single attempt if not connected, or set
  1267.             parameters and password without dialing if already
  1268.             connected
  1269.  
  1270.     If the number is PROMPT, the user may enter multiple numbers.  If
  1271.     'redial' is RECONNECT, all but the first number will be ignored.
  1272.     Otherwise, the entire list will be tried either once or until a
  1273.     successful connect.
  1274.  
  1275.     See also LISTDIAL, MDIAL.
  1276.  
  1277. DISPLAY "msg"
  1278.     Display the variable-expanded version (see EXEC for details) of the
  1279.     given string at the current cursor position, and update the cursor
  1280.     position to be at the end of the string.  This is similar to the
  1281.     MESSAGE command, but it always displays at the current position;
  1282.     MESSAGE also does not change the cursor position.  The characters
  1283.     ^A through ^F and ^H in the string invoke special actions.  ^C clears
  1284.     from the current position to the end of the line while ^H backs up
  1285.     one column if not already at the left edge; the other special
  1286.     characters are detailed under "Writing your own Help FIles".
  1287.  
  1288.     See also MESSAGE.
  1289.  
  1290. DVEXEC ON|OFF "DVP-command"
  1291.     Start a program in a separate DESQview window.  The first
  1292.     parameter specifies whether RBcomm should keep its serial port
  1293.     routines active; if OFF, the other program may safely perform
  1294.     serial I/O and RBcomm will wait until it terminates (if ON,
  1295.     RBcomm will continue immediately, but the new program may not
  1296.     take over the serial port interrupt without disrupting RBcomm).
  1297.     The second parameter specifies the full name of the .DVP file
  1298.     to be launched and optionally commandline parameters to
  1299.     override those stored in the .DVP.
  1300.     Example:
  1301.         DVEXEC OFF "C:/DV/OZ-PIF.DVP /X"
  1302.             might call the OZSMALL program to perform a CompuServe
  1303.         B+ file transfer, forcing its commandline to "/X"
  1304.         (meaning exit on completion).
  1305.  
  1306. ECHO ON|OFF
  1307.     ECHO ON forces half-duplex (local echo on) mode, ECHO OFF forces
  1308.     full-duplex (local echo off).
  1309.     (see Alt-E)
  1310.  
  1311.     See also STRIP_PARITY, TOGGLE_ECHO.
  1312.  
  1313. ENDWHEN which
  1314.     cancel the specified WHEN command.  Currently supported:
  1315.        ALL           cancel all WHENs except the autodownloads
  1316.        ALL_XFER    cancel all WHENs including the autodownloads
  1317.        LAST           cancel the last executed WHEN.  A second call without
  1318.              an intervening WHEN acts the same as ENDWHEN ALL.
  1319.  
  1320.     Note: ENDWHEN ALL is implemented as an ENDWHEN ALL_XFER followed
  1321.     by an AUTO_XFER.
  1322.  
  1323.     See also AUTO_XFER, WHEN.
  1324.  
  1325. EXEC "command-to-execute"
  1326.     everything up to the first blank in the string specifies the program to
  1327.     execute (the PATH will be searched if no explicit path is given, and
  1328.     both .COM and .EXE will be looked for if there is no explicit
  1329.     extension), the remainder of the string is the command tail to pass to
  1330.     the program.  Note that a following IF command will always consider
  1331.     the EXEC to have succeeded if you use COMMAND.COM to run the program
  1332.     with the construct
  1333.         "%VCOMSPEC% /c cmd"
  1334.     due to a misfeature of COMMAND.COM.
  1335.  
  1336.     If SAVE_SCREEN is ON, RBcomm will prompt for a key, then restore
  1337.     the screen to the state it was in before the EXEC.  No message will
  1338.     be displayed if the program returns an error; however, an error
  1339.     message will still be displayed if there was an error while attempting
  1340.     to load the program.
  1341.  
  1342.     Within the command, a percent sign introduces a variable substitution.
  1343.     The following sequences are supported:
  1344.         %a     hexadecimal I/O base address being used
  1345.         %C     contents of the cut buffer (see CUT and PASTE)
  1346.         %d     current date, in format mm-dd-yy
  1347.         %D     current directory, including drive
  1348.         %F     file(s) to transfer; this substitution is only meaningful
  1349.              for a file transfer parameter string, and has an undefined
  1350.          action elsewhere
  1351.         %i     IRQ number being used (0-15)
  1352.         %I     get input from user.  The following characters up to the next
  1353.          percent sign are used as the prompt and then discarded.
  1354.         %M     current macro file name
  1355.         %N     name of current remote system (from dialing directory)
  1356.         %p     port number (1-4)
  1357.         %P     port parameters, in same format as dialing directory
  1358.          display
  1359.         %s     current serial port speed
  1360.         %t     current time, in format hh:mm:ss
  1361.         %V     get an environment variable.  The following characters up to
  1362.          the next percent sign are used as the name of the variable
  1363.          and then discarded.
  1364.         %w     current switch character
  1365.         %%     a percent sign
  1366.         %/     a forward slash unless the last character of the expansion
  1367.          for the string up to this point is a slash or backslash
  1368.         %\     a backslash unless the last character of the expansion
  1369.          for the string up to this point is a slash or backslash
  1370.  
  1371.     See also EXECN, IF, SHELL.
  1372.  
  1373. EXECN  "command-to-execute"
  1374.     This command is identical to EXEC, except that no error box is
  1375.     displayed in the event of an error.  If SAVE_SCREEN is ON, the
  1376.     screen is restored without pausing for a keystroke.
  1377.  
  1378.     See also EXEC.
  1379.  
  1380. EXIT errorlevel
  1381.     End RBcomm.  Will prompt you whether or not to hang up if you are
  1382.     still connected to another system.  Returns the specified errorlevel
  1383.     to DOS; usually this should be zero, but other values may be used
  1384.     to control batch file execution.
  1385.  
  1386. EXPAND_BLANK ON|OFF
  1387.     Specify whether RBcomm should send a single blank instead of a
  1388.     completely blank line when TYPEing a file (see Alt-T and TYPE).
  1389.     If ON, a blank will be sent to separate two consecutive
  1390.     carriage returns (TYPE converts both CRLF and LF to CR to
  1391.     simulate keyboard input); if OFF, no extra blanks will be
  1392.     generated regardless of the data in the file.
  1393.  
  1394.     See also TYPE.
  1395.  
  1396. FDELETE "filespec"
  1397.     delete the file(s) named by filespec (which may include wildcards).
  1398.     Note that there is no confirmation requested, so use this command
  1399.     with care!!!
  1400.  
  1401.     See also FILES.
  1402.  
  1403. FILES "filespec"
  1404.     display a three-up list of the files matching the filespec.  This
  1405.     uses the file pager described above.
  1406.  
  1407.     See also FDELETE.
  1408.  
  1409. FORCE_CLEANUP keyname
  1410.     execute the following line(s), then execute the macro bound to
  1411.     "keyname" regardless of how the commands are exited (i.e. normally,
  1412.     ABORT, or <Esc>).  FORCE_CLEANUPs may be nested, in which case
  1413.     the innermost one is the only one to execute unless the cleanup
  1414.     code executes an ABORT itself (then execution gets passed to the one
  1415.     enclosing it, etc.).  If no cleanup is needed and the FORCE_CLEANUP
  1416.     is merely being used to prevent a complete abort on Esc, the pseudo-
  1417.     key Null may be used.  Null is guaranteed to perform no action and
  1418.     return immediately.
  1419.  
  1420. GOTO_KEY keyname
  1421.     continue execution with the specified macro (if bound).     Never returns
  1422.     to the current macro.  If the key is not bound (i.e. GOTO_KEY Null),
  1423.     execution resumes at the point from which the current macro was
  1424.     CALLed, effectively producing a return from a nested macro.
  1425.  
  1426.     See also CALL, PUSHKEY.
  1427.  
  1428. HANGUP
  1429.     hang up.  Executes macro bound to "CleanUp" before actually hanging
  1430.     up if carrier detect is active.     After hanging up, the default macro
  1431.     file is reloaded (thus cancelling any remaining WHENs and DELAYEDs).
  1432.  
  1433.     See also HANGUP_ONLY.
  1434.  
  1435. HANGUP_ONLY
  1436.     hang up, but do not execute the "CleanUp" macro or reload macro files.
  1437.  
  1438.     See also HANGUP.
  1439.  
  1440. HELP
  1441.     pop up the help screen.     If you currently have the macro file FOO
  1442.     loaded, RBcomm first attempts to read the file FOO.HLP in the RBcomm
  1443.     directory.  If it is unable to do so, it then attempts to read
  1444.     RBCOMM.HLP.
  1445.  
  1446.     While viewing the help screen(s), you may enter an Alt-key command.
  1447.     This will immediately exit the help system and execute the command
  1448.     right away.  If you press Alt=, that fact will be remembered, and
  1449.     the Alt= will be used to quote the next Alt-key command you press
  1450.     while in the help system.
  1451.  
  1452. IDLE
  1453.     go into idle mode, sending a blank followed by a backspace every 2
  1454.     minutes.  Press Esc to end idle mode.
  1455.  
  1456.     Both the interval and the sequence sent by idle mode may be configured
  1457.     with RBCONFIG.
  1458.  
  1459. IF    SUCCESS|FAILED|CONNECTED|OFFLINE|DV|NOT DV
  1460.     IF SUCCESS and IF FAILED conditionally execute a command based on the
  1461.     completion status of an immediately preceding EXEC, SHELL, SEND,
  1462.     SENDFILE, RECEIVE, RECEIVEFILE, or WAITFOR.  The following line (or
  1463.     lines if a MULTI) is executed only if that prior command was
  1464.     successful in the case of IF SUCCESS, or if it failed in the case of
  1465.     IF FAILED.
  1466.  
  1467.     IF CONNECTED executes the following command if carrier detect is
  1468.     asserted, while IF OFFLINE executes the following command if
  1469.     carrier detect is deasserted.
  1470.  
  1471.     IF DV executes the following command if RBcomm has detected that it
  1472.     is running under DESQview, while IF NOT DV executes the following
  1473.     command only if RBcomm is not running under DESQview.
  1474.  
  1475.     For example, if you want to execute a program only after failing to
  1476.     see a particular string, you would use
  1477.  
  1478.         MULTI
  1479.         WAITFOR 10 "don't run program"
  1480.         IF FAILED
  1481.             EXEC "someprog args"
  1482.         END
  1483.  
  1484.     See also ABORT_UNTIL, EXEC, SHELL, SEND, RECEIVE, WAITFOR, UNTIL.
  1485.  
  1486. KFLUSH
  1487.     empty the keyboard buffer (including RBcomm's key stack).
  1488.  
  1489.     See also AWAITKEY, TFLUSH.
  1490.  
  1491. LEARN
  1492.     start learning a macro string.    The recorded string may be sent to
  1493.     the remote system with RECALL.
  1494.  
  1495.     See also LOAD_MACRO, RECALL.
  1496.  
  1497. LISTDIAL "numbers"
  1498.     dial the specified numbers from the dialing directory repeatedly until
  1499.     a connection is established with one of the numbers.  If the empty
  1500.     string is specified, the dialing directory is popped up and the
  1501.     previous list of numbers (less the system to which RBcomm
  1502.     established a connection) is recalled.
  1503.  
  1504.     Each of the numbers in the list must be separated from the previous
  1505.     number by one or more spaces or commas.     For example,  "1,5 7,2 4"
  1506.     would attempt to dial entry 1, then entry 5, then 7, then 2, and
  1507.     finally entry 4 before repeating.  Any numbers in the list which are
  1508.     higher than the highest-numbered entry in the current dialing
  1509.     directory are silently skipped.
  1510.  
  1511.     See also DIAL, MDIAL.
  1512.  
  1513. LOAD_MACRO "file"
  1514.     load the specified macro file from the RBcomm directory.  If an empty
  1515.     filename is given, the user will be prompted for a name, which
  1516.     defaults to the name of the currently loaded macro file.  The current
  1517.     macro (if any) and any that it had interrupted are aborted.  However,
  1518.     if the interruption occurred during a command of extended duration
  1519.     such as a WAITFOR, that command will complete normally before the
  1520.     macro is aborted.
  1521.  
  1522.     See also LEARN, RECALL.
  1523.  
  1524. LOG "filename" "message"
  1525.     append the specified message to the named file.     Both the filename
  1526.     and the message may contain variable expansions as described under
  1527.     EXEC.  If the filename is (or expands to) the empty string "", the
  1528.     expanded message is appended to the current log file (if any).
  1529.  
  1530.     See also OPEN_LOG.
  1531.  
  1532. LOWER_DTR
  1533.     requests that DTR remain dropped after the next HANGUP or HANGUP_ONLY
  1534.     command.  The best place to put this command is in your CleanUp macro.
  1535.  
  1536. LTRIM CUTBUFFER "trimchars"
  1537.     remove from the left (beginning) of the cut buffer (see CUT) the
  1538.     longest sequence of characters consisting entirely of characters in
  1539.     "trimchars".  A future version of RBcomm supporting string variables
  1540.     will permit trimming more than just the cut buffer.
  1541.  
  1542.     Example: if a previous CUT command has placed "12  A22B  34" into the
  1543.       cut buffer, the command
  1544.           LTRIM CUTBUFFER " 1234"
  1545.       will result in "A22B  34" becoming the contents of the cut buffer,
  1546.       available for the next PASTE command or @P in the input editor.
  1547.  
  1548.     See also CUT, RTRIM, TRIM.
  1549.  
  1550. MDIAL "number" ONCE|ATTACK
  1551.     dial the specified phone number as if it had been entered as the
  1552.     manual number for the dialing directory display.
  1553.  
  1554.     See also DIAL, LISTDIAL.
  1555.  
  1556. MESSAGE row col msg
  1557.     Display the result of expanding any variables in the specified message
  1558.     (see EXEC for details) starting at the given row and column on the
  1559.     screen.     If either row or column is 255, use the current row or
  1560.     column.     Does not change the current cursor position, unlike the
  1561.     DISPLAY command.  As with DISPLAY, the characters ^A through ^F and ^H
  1562.     specify special actions.
  1563.  
  1564.     See also DISPLAY.
  1565.  
  1566. MESSAGEBOX msg
  1567.     if running under TopView or DESQview, a window with the given message
  1568.     will pop up for three seconds.    This command is ignored otherwise.
  1569.  
  1570.     The message has any variables expanded, and the first 40 characters
  1571.     are displayed in the pop up window.  See EXEC for the details of
  1572.     the variable expansion.
  1573.  
  1574.     See also NOTIFY, CANCEL_NOTIFY.
  1575.  
  1576. MULTI
  1577.     the following lines, up to but not including a line starting with END,
  1578.     are assigned to the specified key.  The macros assigned to the key
  1579.     may not total more than 253 bytes, and the macro compiler will
  1580.     complain if they do.
  1581.  
  1582.     The format of the following lines is the same as for a regular macro,
  1583.     except that you do not specify a keyname.  For example, to make
  1584.     shift-F2 switch terminal emulation to VT52, use
  1585.  
  1586.     +F2    MULTI
  1587.         PUSHKEY 13 0
  1588.         PUSHKEY 'V' 0
  1589.         PARAM_MENU
  1590.         END
  1591.  
  1592.     You may also use { and } on separate lines as synonyms for MULTI
  1593.     and END.  The braces are preferred, as MULTI/END will be phased out
  1594.     in future versions.
  1595.  
  1596. MUSIC ON|OFF
  1597.     specify whether ANSI music should be enabled while using the
  1598.     ANSI BBS terminal emulation.  This switch is necessary because
  1599.     the command to play music conflicts with a standard ANSI
  1600.     control sequence (Esc [ M).
  1601.  
  1602.     See also PLAY, SOUND.
  1603.  
  1604. NOTIFY    msg
  1605.     if running under TopView or DESQview, and RBcomm determines that it is
  1606.     in the background, a window with the given message will pop up for
  1607.     three seconds.    This command is ignored otherwise.
  1608.  
  1609.     The message has any variables expanded, and the first 40 characters
  1610.     are displayed in the pop up window.  See EXEC for the details of
  1611.     the variable expansion.
  1612.  
  1613.     See also CANCEL_NOTIFY, MESSAGEBOX.
  1614.  
  1615. OPEN_LOG  "file"
  1616.     if logging is on, the current log file will be closed.    Then, the
  1617.     specified log file will be opened (if no name is given, a prompt is
  1618.     popped up).  The same variable expansions which are valid for
  1619.     the EXEC command are applied to the filename which is given (or
  1620.     entered by the user).
  1621.  
  1622.     For example, to allow the environment variable RBLOG to specify the
  1623.     base name of the log file, use
  1624.         OPEN_LOG "%VRBLOG%.LOG"
  1625.  
  1626.     See also EXEC, CLOSE_LOG, TOGGLE_LOG, RECEIVE.
  1627.  
  1628. PACECHAR 'c'
  1629.     set the pace character for the TYPE command to 'c'.  RBcomm waits
  1630.     up to three seconds for the pace character when TYPEing a file to
  1631.     the remote system.  RBcomm will not wait if the pace character is
  1632.     ASCII 0 (^@).
  1633.  
  1634.     See also TYPE.
  1635.  
  1636. PARAM_MENU
  1637.     pop up the "Set Parameters" menu
  1638.  
  1639. PASSWORD
  1640.     send the password defined in the dialing directory.  Does not send
  1641.     a carriage return or any other terminating sequence.
  1642.  
  1643.     See also TEXT, TYPE.
  1644.  
  1645. PASTE
  1646.     send the contents of the cut buffer to the remote system.
  1647.  
  1648.     See also CUT.
  1649.  
  1650. PAUSE num-ticks
  1651.     halt execution for num-ticks/18 seconds.  Useful mainly in conjunction
  1652.     with the MULTI command (see above).
  1653.  
  1654. PLAY "play-string"
  1655.     play the notes specified by the string.     The string may contain
  1656.     the following directives:
  1657.         An
  1658.         Bn
  1659.         Cn
  1660.         Dn
  1661.         En
  1662.         Fn
  1663.         Gn    play the given note, 'n' specifies duration as
  1664.             a fraction of a whole note, defaults to that
  1665.             given by the last L command.  A '#' or '+'
  1666.             between the letter and 'n' produces a sharp
  1667.             note, while a '-' produces a flat note.
  1668.         Ln    specify the default length of notes as 1/n of a
  1669.             whole note
  1670.         Mx    specify music type, x=L, N, or S
  1671.             L)egato: note uses entire period
  1672.             N)ormal: note uses 7/8 of its time period
  1673.             S)taccato: note uses 3/4 of its time period
  1674.         Nn    play note number 'n', from 1 to 95
  1675.         On    specify octave number, 0 to 9.    O3 starts at
  1676.             middle C
  1677.         Pn    rest for the specified period (1/n of a whole
  1678.             note).    If 'n' is not present, use the length
  1679.             given by the last L command
  1680.         Tn    specify tempo, 32 to 255
  1681.         .    following A-G, N, or P, increases the note's
  1682.             length by 1/2.
  1683.  
  1684.     See also BEEP, SOUND.
  1685.  
  1686. PUSHKEY key scan
  1687. or
  1688. PUSHKEY keyname
  1689.     put the specified key/scancode pair onto RBcomm's internal keyboard
  1690.     stack, where the last pushed pair will be the next keystroke read
  1691.     by RBcomm.  The stack is currently eight keystrokes in size, and any
  1692.     PUSHKEY executed while the stack is full will simply be ignored.
  1693.     "keyname" may be the name of any keystroke recognized by the macro
  1694.     compiler.  <scan> is 0 for regular ASCII characters, and 1 for
  1695.     extended ASCII codes (i.e. function keys).
  1696.  
  1697.     Useful mainly in conjunction with the MULTI command (see above).
  1698.  
  1699. RBCOMM_CMDS ON|OFF
  1700.     Specify whether the terminal emulator should honor RBcomm
  1701.     private commands.
  1702.  
  1703.     See also AVATAR.
  1704.  
  1705. RECALL
  1706.     send the last string recorded with LEARN to the remote system.
  1707.  
  1708.     See also LEARN.
  1709.  
  1710. RECEIVE 'type'
  1711.     start receiving a file with the specified protocol
  1712.           0       prompt for protocol
  1713.           'A'  ASCII (capture to file--equivalent to OPEN_LOG "")
  1714.           'X'  Xmodem with parameters
  1715.           'K'  Xmodem-K with parameters
  1716.           'Y'  Ymodem
  1717.           '^Y' Ymodem with parameters
  1718.           'G'  Ymodem-G
  1719.           '^G' Ymodem-G with parameters
  1720.           'Z'  Zmodem
  1721.           '^Z' Zmodem with parameters
  1722.  
  1723.     See also IF, OPEN_LOG, SEND, TYPE.
  1724.  
  1725. RECEIVEFILE 'type' "parameters"
  1726.     start receiving using the specified protocol (which may be any of the
  1727.     ones listed for RECEIVE except 0 or 'A'), passing the specified
  1728.     parameters to the file transfer module.     Unlike RECEIVE, this command
  1729.     will not pop up any messages unless it is unable to load the file
  1730.     transfer module; in case of an error, the completion status is set
  1731.     to FAILED.
  1732.  
  1733.     See also RECEIVE, SENDFILE.
  1734.  
  1735. REPEAT times
  1736.     repeat the command on the next line (or lines if a MULTI) the specified
  1737.     number of times.
  1738.  
  1739. RFLUSH
  1740.     clear any characters which may still be in the serial port receive
  1741.     buffer.
  1742.  
  1743.     See also KFLUSH, TFLUSH.
  1744.  
  1745. RTRIM CUTBUFFER "trimchars"
  1746.     remove from the right (end) of the cut buffer (see CUT) the longest
  1747.     sequence of characters consisting entirely of characters in
  1748.     "trimchars".  A future version of RBcomm supporting string variables
  1749.     will permit trimming more than just the cut buffer.
  1750.  
  1751.     Example: if a previous CUT command has placed "12  A22B  34" into the
  1752.       cut buffer, the command
  1753.           RTRIM CUTBUFFER " 1234"
  1754.       will result in "12  A22B" becoming the contents of the cut buffer,
  1755.       available for the next PASTE command or @P in the input editor.
  1756.  
  1757.     See also CUT, LTRIM, TRIM.
  1758.  
  1759. SAVE_MACRO "file"
  1760.     no longer supported.
  1761.  
  1762. SAVE_SCREEN ON|OFF
  1763.     determine whether or not to save the current screen while executing
  1764.     external programs (other than file transfer).  The state of this
  1765.     flag slightly modifies the behavior of EXEC, EXECN, and SHELL.
  1766.  
  1767.     See also EXEC, EXECN, SHELL.
  1768.  
  1769. SCROLLBACK
  1770.     bring up the scrollback pager.    In addition to the standard keystrokes
  1771.     understood by the pager, 'M' marks the top of the currently displayed
  1772.     screenfull as the beginning of the region to write when 'W' is pressed.
  1773.     After pressing 'W', you will be prompted for a filename.  The section
  1774.     of the scrollback buffer between the marked top (default: beginning of
  1775.     buffer) and the bottom of the currently displayed screen is appended
  1776.     to the specified file.
  1777.  
  1778. SELECT_SCREEN num
  1779.     select a new screen to be the visible and active screen.  If "num" is
  1780.     PROMPT, displays a menu of the available screens.
  1781.  
  1782. SEND 'type'
  1783.     prepare to send a file with the specified protocol
  1784.           0       prompt for protocol
  1785.           'A'  ASCII
  1786.           'X'  Xmodem
  1787.           'K'  Xmodem-K
  1788.           'Y'  Ymodem
  1789.           'G'  Ymodem-G
  1790.           'Z'  Zmodem
  1791.     control character versions of any of the above ('^X', '^Y', etc) will
  1792.     delete the file(s) corresponding to the first filespec after sending.
  1793.  
  1794.     See also IF, SENDFILE, RECEIVE, TYPE.
  1795.  
  1796. SENDFILE 'type' "file"
  1797.     send the specified file with the given protocol, which may be any of
  1798.     the ones listed for SEND except 0 or 'A'.  Unlike SEND, this command
  1799.     will not pop up any messages unless it is unable to load the file
  1800.     transfer module; in case of an error, the completion status is set
  1801.     to FAILED.
  1802.  
  1803.     See also RECEIVEFILE, SEND.
  1804.  
  1805. SHELL
  1806.     shell to DOS.  If SAVE_SCREEN is ON, the original screen will be
  1807.     restored when you exit from the subshell.
  1808.  
  1809.     See also EXEC, IF.
  1810.  
  1811. SOUND freq dur
  1812.     Generate a tone with a frequency of <freq> Hertz for <dur> clock
  1813.     ticks (max 255).  If the frequency is 0, a musical pause of the
  1814.     specified duration is created.    If both frequency and duration are
  1815.     zero, all queued tones are discarded (applies only to DESQview at
  1816.     this time).
  1817.  
  1818.     See also BEEP, PLAY.
  1819.  
  1820. STRIP_PARITY ON|OFF
  1821.     Specify whether RBcomm should pass through the parity bit (OFF)
  1822.     or remove it before further processing (ON).  This command is
  1823.     similar to the 'P' command on the Alt-P parameters menu.
  1824.  
  1825.     See also ECHO.
  1826.  
  1827. TEST EXISTS "filespec"
  1828.     determine whether any files matching the filespec exist.  Sets the
  1829.     status to SUCCESS if at least one exists, FAILED if none.  The status
  1830.     may be checked with IF or UNTIL commands.
  1831.  
  1832.     See also TEST WHEN, IF.
  1833.  
  1834. TEST WHEN "str"
  1835.     determine whether a WHEN with the specified search string is currently
  1836.     active.     Sets the status to SUCCESS if at least one exists, FAILED if
  1837.     there are no WHENs with the specified string.  The status may be
  1838.     checked with IF or UNTIL commands.
  1839.  
  1840.     See also IF, WHEN, TEST EXISTS.
  1841.  
  1842. TEXT "msg"
  1843.     send the specified characters out the comm port.  "msg" is limited to
  1844.     253 characters.
  1845.  
  1846. TFLUSH
  1847.     discard any characters queued for transmission to the remote system 
  1848.     which have not yet been sent.
  1849.  
  1850.     See also KFLUSH, RFLUSH.
  1851.     
  1852. TOGGLE_ECHO
  1853.     toggle the state of local echoing
  1854.  
  1855.     See also ECHO.
  1856.  
  1857. TOGGLE_LOG
  1858.     if logging is currently on, turns off logging received data to file
  1859.     if logging is off, pops up a prompt for the name of the capture file
  1860.  
  1861.     See also OPEN_LOG, CLOSE_LOG.
  1862.  
  1863. TOGGLE_VERBOSE
  1864.     toggle the state of verbose mode (see Alt-Y)
  1865.  
  1866.     See also VERBOSE.
  1867.  
  1868. TRANSLATE_BS ON|OFF
  1869.     TRANSLATE_BS ON turns on backspace/delete swapping, TRANSLATE_BS OFF
  1870.     turns it off.
  1871.  
  1872. TRIM CUTBUFFER "trimchars"
  1873.     remove from both beginning and end of the cut buffer (see CUT) the
  1874.     longest sequence of characters consisting entirely of characters in
  1875.     "trimchars".  A future version of RBcomm supporting string variables
  1876.     will permit trimming more than just the cut buffer.
  1877.  
  1878.     Example: if a previous CUT command has placed "12  A22B  34" into the
  1879.       cut buffer, the command
  1880.           TRIM CUTBUFFER " 1234"
  1881.       will result in "A22B" becoming the contents of the cut buffer,
  1882.       available for the next PASTE command or @P in the input editor.
  1883.  
  1884.     See also CUT, LTRIM, RTRIM.
  1885.  
  1886. TYPE "file"
  1887.     send the specified file to the remote system as a stream of ASCII
  1888.     characters.  Pauses at the end of each line and waits for the pace
  1889.     character to be echoed (will continue after three seconds even if
  1890.     the echo is not seen).    Equivalent to
  1891.         SEND 'A'
  1892.     if no filename is given.
  1893.  
  1894.     See also EXPAND_BLANK, PACECHAR, SEND.
  1895.  
  1896. UI_MENU
  1897.     No longer supported.  Use LOAD_MACRO "" instead.
  1898.  
  1899.     See also LEARN, LOAD_MACRO.
  1900.  
  1901. UNTIL SUCCESS|FAILED|CONNECTED|OFFLINE
  1902.     repeatedly executes the following line (or lines if a MULTI) until
  1903.     the status of the last action is either success for UNTIL SUCCESS
  1904.     or failure for UNTIL FAILED.   UNTIL CONNECTED repeatedly executes
  1905.     the following command until carrier detect becomes active, while
  1906.     UNTIL OFFLINE repeats until carrier detect drops.
  1907.  
  1908.     See also ABORT_UNTIL, IF.
  1909.  
  1910. VERBOSE ON|OFF
  1911.     VERBOSE ON turns on verbose mode, VERBOSE OFF turns off verbose mode.
  1912.     (see Alt-Y)
  1913.  
  1914.     See also TOGGLE_VERBOSE.
  1915.  
  1916. VIEW "filename"
  1917.     display the specified file one screenfull at a time.  Pops up a prompt
  1918.     if the null filename is given.
  1919.  
  1920.     Pressing the space bar displays the next screen, Escape exits the
  1921.     file view.
  1922.  
  1923. WAITFOR timeout "wait-string"
  1924.     wait up to timeout seconds for the specified string of characters to
  1925.     arrive over the comm port.  Useful mainly in conjunction with the
  1926.     MULTI command (see below).
  1927.  
  1928.     You may test whether the string was actually received by following
  1929.     the WAITFOR with IF SUCCESS or IF FAILED (unlike versions prior to
  1930.     3.11, a failed WAITFOR does not abort the MULTI it is a part of).
  1931.  
  1932.     See also IF.
  1933.  
  1934. WHEN    iterations "when-string"
  1935.     execute the command on the following line (or lines if it is a MULTI)
  1936.     whenever the "when-string" is encountered in the data stream coming
  1937.     from the remote system.     After the string has been encountered
  1938.     "iterations" times, the WHEN is automatically canceled (if iterations
  1939.     is zero, the WHEN must be explicitly canceled with ENDWHEN).
  1940.     You may have up to six WHENs active at any time (eight if you cancel
  1941.     the autodownload [see ENDWHEN above]).    All WHENs are canceled on
  1942.     hanging up or dialing a number, and autodownload is re-enabled.
  1943.  
  1944.     WHENs are tested in the order in which they were executed, so multiple
  1945.     WHENs with the same when-string will trigger in the order in which
  1946.     they were asserted.
  1947.  
  1948.     This can be an extremely powerful command.  For example, you can
  1949.     implement another autodownloading (or uploading!) protocol simply by
  1950.     adding
  1951.         WHEN 0 "start-string"
  1952.            EXEC "xfer-program parms"
  1953.     to the AUTO or OnLoad macro.  On CompuServe, you can make Ymodem
  1954.     autodownloading by adding
  1955.         WHEN 0 "initiate YMODEM receive"
  1956.            RECEIVE 'Y'
  1957.     to the OnLoad macro.
  1958.  
  1959.     The built-in Zmodem autodownload corresponds to
  1960.         WHEN 0 "**^XB00"
  1961.            RECEIVE 'Z'
  1962.     while Zmodem auto-upload can be added with
  1963.         WHEN 0 "**^XB01"
  1964.            SEND 'Z'
  1965.  
  1966.     The standard Puma autodownload is equivalent to the lines
  1967.         WHEN 0 "^X^H^XPuma^X^H^X"
  1968.            RECEIVE 'P'
  1969.     [thanks to Matthew Thomas for publishing his autodownload string!].
  1970.  
  1971.     See also DELAYED, ENDWHEN.
  1972.  
  1973. WINDOW    row col width height
  1974.     limit the terminal emulator to a portion of the full screen.
  1975.  
  1976.     WINDOW 0 0 255 255 will restore use of the full screen regardless of
  1977.     the screen size.
  1978.  
  1979. -----------
  1980. Time Limits
  1981. -----------
  1982.  
  1983. The maximal time intervals which may be specified for various commands are:
  1984.     255 ticks (~14 seconds)        PAUSE, SOUND
  1985.     255 seconds (4.25 minutes)    WAITFOR
  1986.     18 hours (64800 seconds)    DELAYED
  1987.  
  1988. -----------------------------------------------------------------------------
  1989. Ready-Made Macro Files
  1990. ----------------------
  1991.  
  1992. The RBcomm distribution includes the following macro files:
  1993.  
  1994. AVATAR.MAC    for use with a BBS that supports AVATAR emulation in
  1995.         its full-screen editor.  This file implements the so-
  1996.         called "DOORWAY mode", passing through all keystrokes.
  1997.         To access RBcomm's commands, you must use the Alt=
  1998.         escape key before the RBcomm command key.
  1999.  
  2000. AVATOPUS.MAC    for use with Opus 1.10 or later BBSs, or compatibles
  2001.         such as Maximus.  Implements DOORWAY mode as AVATAR.MAC
  2002.         does, but also adds logon scripts for the OPUS CBCS
  2003.  
  2004. BAREOPUS.MAC
  2005.  
  2006. CPOINT.MAC    logon to Central Point Software's BBS
  2007.  
  2008. DDJ.MAC        logon to M&T Publishing's BBS to access the DDJ listings
  2009.  
  2010. EMACS.MAC    for use with Unix systems.  Turns your Alt key into a
  2011.         Meta key.
  2012.  
  2013. EXAMPLES.MAC    various sample macros illustrating different features.
  2014.  
  2015. LK201.MAC    emulate an LK201 keyboard
  2016.  
  2017. OPUS.MAC
  2018.  
  2019. QDECK.MAC    logon to Quarterdeck's BBS
  2020.  
  2021. RBCOMM.MAC    default macros
  2022.  
  2023. VT100.MAC    emulate a VT100 keyboard
  2024.  
  2025. VT3270.MAC    emulate a VT100/IBM 3270 keyboard
  2026.  
  2027. VT52.MAC    emulate a VT52 keyboard
  2028.  
  2029. WORDSTAR.MAC    send WordStar motion commands using arrow keys
  2030.  
  2031. -----------------------------------------------------------------------------
  2032. Writing your own Help Files
  2033. ---------------------------
  2034.  
  2035. Help files are plain ASCII files with the exception that several control
  2036. characters are used to change character attributes within a line (each
  2037. line starts with the default attributes).
  2038.  
  2039.     ^A  (A)lternate foreground and background colors, thus turning
  2040.         reverse video on or off
  2041.     ^B  toggle the (B)old bit
  2042.     ^D  reset to (D)efault attributes
  2043.     ^E  switch to underlined color as defined by RBCONFIG
  2044.     ^F  toggle (F)lashing (blink bit)
  2045.  
  2046. -----------------------------------------------------------------------------
  2047. Terminal Emulation
  2048. ------------------
  2049.  
  2050. RBcomm supports three terminal emulations.  ANSI provides standard ANSI
  2051. escape sequences plus most VT102 and many VT200 escape sequences.  BBS is
  2052. identical to ANSI except that clearing the screen with Esc-[-J or Esc-[-2-J
  2053. also homes the cursor, character set switching is disabled, and two of
  2054. RBcomm's private commands are replaced by the AVATAR level 0 command set.
  2055. Finally, VT52 replaces many of the Esc-letter sequences in ANSI with the
  2056. actions a VT52 or H19 would perform.  In addition, in all of these modes,
  2057. RBcomm has its own, much more compact command set (which may optionally
  2058. be disabled to permit display of the corresponding control characters).
  2059.  
  2060. ------------------
  2061. Control Characters
  2062. ------------------
  2063.  
  2064. Note: Control characters marked with (RBcomm) may be displayed if the
  2065.     terminal emulation is set to "BBS" and RBcomm private commands are
  2066.     disabled. 
  2067.  
  2068. ^A    UnixWindows command character (see below for sequences)
  2069. ^B    move cursor right one position (RBcomm)
  2070. ^C    move cursor down a line (RBcomm)
  2071. ^D    move cursor left one position, does not wrap to previous line (RBcomm)
  2072. ^E    send the answerback string to the remote system (ANSI and VT52 only)
  2073. ^F    special sequences (see below) (RBcomm)
  2074. ^G    sound bell, or flash screen if visible bell enabled
  2075. ^H    move cursor left one position, wraps to previous line
  2076. ^I    move to next tab stop
  2077. ^J    move cursor down a line, scrolling screen when at bottom
  2078. ^K    insert a blank line
  2079. ^L    clear screen and home cursor
  2080. ^M    move cursor to start of line
  2081. ^N    "shift out"--switch to G1 character set (VT100)
  2082. ^O    "shift in"--switch to G0 character set (VT100)
  2083. ^P    clear rest of line (Note: if AVATAR is in cooked mode, ^P is the
  2084.     "cook" character, causing the next character to have its high three
  2085.     bits cleared; two consecutive ^Ps will be needed to give the
  2086.     clear-line command) (RBcomm)
  2087. ^R    change to reverse video (RBcomm)
  2088. ^T    change character attribute to underlined (RBcomm)
  2089. ^U    clear underlined attribute and reverse video (RBcomm)
  2090. ^V    start of an AVATAR command (see below)
  2091. ^W    delete character at cursor position, rest of line shifts left (RBcomm)
  2092. ^X    insert a blank at the cursor's position, push rest of line
  2093.     right (RBcomm)
  2094. ^Y    repeat the following character the number of times specified by
  2095.           the second character after the ^Y
  2096. ^Z    delete line cursor is on (RBcomm)
  2097. ^[    escape sequence (see below)
  2098. ^\    turn on insert mode (RBcomm)
  2099. ^]    turn off insert mode (RBcomm)
  2100. ^^    move cursor up a line (RBcomm)
  2101. ^_    the following two characters (less 32) specify the new cursor
  2102.     column and row.     i.e. ^_-blank-blank homes the cursor. (RBcomm)
  2103.  
  2104.  
  2105. ----------------
  2106. Escape Sequences
  2107. ----------------
  2108.  
  2109. Esc-blank-F  turn off eight-bit control characters
  2110. Esc-blank-G  turn on eight-bit control characters.  When eight-bit control
  2111.          characters are enabled, many of the characters from 80h through
  2112.          9Fh are equivalent to Esc-<char-40h>.
  2113. Esc-(    (VT100) next character ('0', '1', '2', 'A', or 'B') sets G0 character
  2114.     set
  2115. Esc-)    (VT100) next character ('0', '1', '2', 'A', or 'B') sets G1 character
  2116.     set
  2117. Esc-#    (VT100) next character sets character size
  2118.     only '8' implemented -- fill screen with 'E's for alignment display
  2119. Esc-7    save cursor
  2120. Esc-8    restore cursor
  2121. Esc-<    set terminal emulation to ANSI
  2122. Esc-=    set keypad application mode (if allowed to change NumLock by RBCONFIG)
  2123. Esc->    set keypad numeric mode (if allowed to change NumLock by RBCONFIG)
  2124. Esc-@    turn on insert mode
  2125. Esc-A    move cursor up
  2126. Esc-B    move cursor down
  2127. Esc-C    move cursor right
  2128. Esc-D    (ANSI) "index"--move cursor down, scroll if at bottom
  2129.     (VT52) move cursor left
  2130. Esc-E    (ANSI) move to start of next line, scroll if at bottom
  2131.     (VT52) clear screen
  2132. Esc-F    (ANSI) not implemented
  2133.     (VT52) select graphics character set
  2134. Esc-G    (ANSI) not implemented
  2135.     (VT52) select text character set
  2136. Esc-H    (ANSI) set horizontal tab at current position
  2137.     (VT52) home cursor
  2138. Esc-I    (ANSI) horizontal tab
  2139.     (VT52) reverse linefeed, scrolls down if already on top line
  2140. Esc-J    (ANSI) not implemented
  2141.     (VT52) clear to end of screen
  2142. Esc-K    (ANSI) not implemented
  2143.     (VT52) clear to end of line
  2144. Esc-L    (ANSI) not implemented
  2145.     (VT52) insert a new line at cursor
  2146. Esc-M    (ANSI) "reverse index"--cursor up, reverse scroll if at top
  2147.     (VT52) delete cursor line
  2148. Esc-N    (ANSI) not implemented
  2149.     (VT52) delete char at cursor, rest of line shifts left
  2150. Esc-O    (ANSI) not implemented
  2151.     (VT52) turn off insert mode
  2152. Esc-Y    move cursor, next two characters are row + 32, column + 32
  2153. Esc-Z    request identification
  2154.     (ANSI) RBcomm returns the string "rbcommN.NNx" where N.NN is the
  2155.            version number and "x" is a single byte identifying implemented
  2156.            capabilities
  2157.            bit 0: multiple screens available if set
  2158.            bit 1: file transfer implemented (always set)
  2159.            bit 6: always set (makes character printable)
  2160.            bit 7: always clear
  2161.            remaining bits reserved (zero)
  2162.     (VT52) RBcomm returns the string Esc-/-Z, indicating a VT100 emulating
  2163.            a VT52.
  2164. Esc-[    ANSI sequence, see below
  2165. Esc-]    Operating System Command.  The following characters through an Esc-\
  2166.     sequence (maximum 80 characters) are skipped, as this command has
  2167.     no effect.
  2168. Esc-^    ANSI Privacy Message.  The following characters through an Esc-\
  2169.     sequence (maximum 80 characters) are accumulated.  If running under
  2170.     DESQview, the first 40 are displayed in the notification window;
  2171.     otherwise, the accumulated characters are discarded.
  2172. Esc-_    Application Program Command.  The following characters through an
  2173.     Esc-\ sequence (maximum 80 characters) are skipped, as this command
  2174.     has no effect.
  2175. Esc-c    reset to initial state
  2176. Esc-j    save cursor position       (Heath H19)
  2177. Esc-k    restore cursor position       (Heath H19)
  2178. Esc-l    erase line           (Heath H19)
  2179. Esc-p    turn on bold characters
  2180. Esc-q    turn off bold characters
  2181. Esc-v    turn on line wrap       (Heath H19)
  2182. Esc-w    turn off line wrap       (Heath H19)
  2183. Esc-z    reset terminal emulation   (Heath H19)
  2184.  
  2185.  
  2186. --------------
  2187. ANSI Sequences
  2188. --------------
  2189.  
  2190. All of the sequences listed here consist of Esc-[ followed by zero or more
  2191. numbers separated by semicolons followed by the command letter.     Therefore,
  2192. only the command letter will be listed.     X1, X2, etc refer to the specified
  2193. numeric argument, and usually are followed by a default value in
  2194. parentheses.  All cursor positioning commands number rows and columns
  2195. starting at 1.
  2196.  
  2197. blank    extended ANSI sequence (see below)
  2198. $    extended ANSI sequence (see below)
  2199. @    insert X1 (1) blanks, shifting rest of line to the right
  2200. A    move cursor up X1 (1) lines
  2201. B    move cursor down X1 (1) lines
  2202. C    move cursor right X1 (1) positions
  2203. D    move cursor left X1 (1) positions
  2204. E    move cursor down X1 (1) lines, scroll if at bottom
  2205. F    move cursor up X1 (1) lines, scroll if at top
  2206. G    move cursor to position X1 (1) in current line
  2207. H    move cursor to row X1 (1), column X2 (1)
  2208. I    move to X1st (1) following horizontal tab position
  2209. J    case X1 (*):  0     clear from cursor to end of screen
  2210.               1     clear from start of screen to cursor
  2211.               2     clear screen
  2212.         * default is 0 for ANSI and VT52, 2 for ANSI-BBS
  2213. K    case X1 (0):  0     clear from cursor to end of line
  2214.               1     clear from start of line to cursor
  2215.               2     clear line
  2216. L    insert X1 (1) lines at cursor
  2217. M    delete X1 (1) lines at cursor
  2218.     or play following music string, if emulation is ANSI-BBS and Music
  2219.       is enabled.  The music string has the same format as for the
  2220.       PLAY command, and is terminated with a ^N character.
  2221. P    delete X1 (1) characters at cursor, rest of line shifts left
  2222. S    scroll up X1 (1) lines
  2223. T    scroll down X1 (1) lines
  2224. U    switch to screen X1 (1) screens later, wrapping back to screen 0
  2225.     if X1 preceded by an equal sign, switch to specified screen
  2226. V    switch to screen X1 (1) screens prior, wrapping to last screen
  2227. X    erase X1 (1) characters starting at cursor position, cursor stays put
  2228. Z    move cursor to X1st (1) preceding horizontal tab position
  2229. `    move cursor to position X1 (1) in current line
  2230. a    move cursor X1 (0) positions from current position in line
  2231. c    device attribute report
  2232.       responds by sending Esc-[-?-6-c (VT102)
  2233. d    move cursor to line X1
  2234. e    move cursor X1 (0) lines from current line
  2235. f    move cursor to row X1 (1), column X2 (1)
  2236. g    case X1 (0):  0      clear horizontal tab at current position
  2237.               3      clear all horizontal tab stops
  2238.               '>' clear all horizontal tab stops, then set tabs every
  2239.               N positions (i.e.  Esc-[->-5-g sets tabs every five
  2240.               columns)
  2241. h    select mode
  2242.     case X1 (0):  ?2  set emulation to ANSI
  2243.               ?3  select 132-column mode (if enabled by RBCONFIG)
  2244.                4  turn on insert mode
  2245.               ?5  turn on inverted video
  2246.               ?6  turn on scrolling-region-relative cursor positioning
  2247.               (origin mode)
  2248.               ?7  turn on wrap mode
  2249.               12  turn on local echo
  2250.               20  turn on newline mode (send CRLF when CR pressed)
  2251.              ?25  turn cursor on (make visible)
  2252. i    media copy
  2253.     case X1 (1):   1  dump entire screen to printer
  2254.               ?1  dump screen line containing cursor to printer
  2255.                4  exit printer controller mode [not yet implemented]
  2256.               ?4  stop echoing to printer [not yet implemented]
  2257.                5  enter printer controller mode [not yet implemented]
  2258.               ?5  start echoing to printer [not yet implemented]
  2259. l    reset mode
  2260.     case X1 (0):  ?2  set emulation to VT52
  2261.               ?3  select 80-column mode
  2262.                4  turn off insert mode
  2263.               ?5  turn off inverted video
  2264.               ?6  set top of scrolling region to topmost line, bottom
  2265.               to bottom of screen, and turn off relative cursor
  2266.               positioning (absolute cursor positioning)
  2267.               ?7  turn off wrap mode
  2268.               12  turn off local echo
  2269.               20  turn off newline mode (send only CR when CR pressed)
  2270.              ?25  turn off cursor (make invisible)
  2271.               Note: may not work on all systems or in all video
  2272.               modes
  2273. m    select graphic rendition
  2274.     for each Xn in order,
  2275.               0     reset attributes to white on black, turn off reverse
  2276.              video
  2277.               1     set bold
  2278.               4     set underlined
  2279.               5     set blinking
  2280.               7     set reverse video
  2281.               8     set invisible (black on black)
  2282.              21     turn off bold
  2283.              22     turn off bold
  2284.              24     turn off underlined
  2285.              25     turn off blinking
  2286.              27     turn off reverse video
  2287.              30     set foreground color
  2288.               -
  2289.                37
  2290.              40     set background color
  2291.               -
  2292.                47
  2293.     Note: Esc-[-m is equivalent to Esc-[-0-m
  2294. n    device status report
  2295.     case X1 (0):  5     report terminal status
  2296.              always sends Esc-[-0-n (terminal OK) to remote
  2297.               6     report cursor position
  2298.              sends string Esc-[-row-;-col-R to remote system
  2299.              15     printer status
  2300.              sends Esc-[-?-1-3-n (no printer) if no printer defined
  2301.                    Esc-[-?-1-0-n if printer is ready
  2302.                    Esc-[-?-1-1-n if printer is not ready
  2303.                  [currently always sends ?13n]
  2304.              25     report User Definable Key status
  2305.              always sends Esc-[-?-21-n (UDK's locked)
  2306.              26     report keyboard dialect
  2307.              always sends Esc-[-?-27-;-1-n (US ASCII)
  2308. r    set scrolling region to rows X1 (1) through X2 (lines-on-screen)
  2309. s    save cursor (may not be nested)
  2310. u    restore cursor
  2311. x    request terminal parameters (VT100)
  2312.     case X1 (0):  0     sends back string indicating bits, parity, speed
  2313.               1     sends back string indicating bits, parity, speed
  2314.     the string sent is
  2315.        Esc-[-<id>-;-<parity>-;-<bits>-;-<tspd>-;-<rspd>-;1;0x
  2316.     where <id> is 2 if X1 was 0 and 3 if X1 was 1
  2317.           <parity> is 1 for none, 2 for space, 3 for mark, 4 for odd,
  2318.               and 5 for even
  2319.           <bits> is 1 for 8, 2 for 7, 3 for 6, and 4 for 5 data bits
  2320.           <tspd> and <rspd> are the transmit and receive speeds:
  2321.              16 -> 110 bps
  2322.              32 -> 150 bps
  2323.              48 -> 300 bps
  2324.              56 -> 600 bps
  2325.              64 -> 1200 bps
  2326.              88 -> 2400 bps
  2327.             104 -> 4800 bps
  2328.             112 -> 9600 bps
  2329.             120 -> 19200 bps
  2330.             128 -> 38400 bps
  2331.             136 -> 57600 bps
  2332.             144 -> 115200 bps
  2333. z    reset terminal emulation (Heath H19)
  2334.  
  2335.  
  2336. -----------------------
  2337. Extended ANSI sequences
  2338. -----------------------
  2339.  
  2340. If the command character for an ANSI sequence is a blank, the NEXT character
  2341. specifies the actual operation.
  2342.  
  2343. @    scroll left X1 (1) columns
  2344. A    scroll right X1 (1) columns
  2345.  
  2346. If the command character for an ANSI sequence is a dollar sign, the NEXT
  2347. character specifies the actual operation.  These are DEC VT2xx extensions.
  2348.  
  2349. p      ANSI mode control state request
  2350.       always returns CSI X1 ; 0 $ y       (unknown mode)
  2351. u      terminal state request
  2352.       always returns DCS 1 $ ST       (no state information returned)
  2353.  
  2354.  
  2355. ---------------------
  2356. UnixWindows sequences
  2357. ---------------------
  2358.  
  2359. When RBcomm receives a ^A, the following character specifies the actual
  2360. command.  If UnixWindows is enabled, a ^A introduces a UnixWindows command
  2361. at ANY time, even in the middle of another command; when disabled, ^A is a
  2362. normal command sequence introducer.  This distinction is necessary because
  2363. both AVATAR and RBcomm private commands may include ^A within the sequence.
  2364. The UnixWindows commands are encoded as follows:
  2365.  
  2366. +---+---+---+---+---+---+---+---+
  2367. | 0 |dir|  function | parameter |
  2368. +---+---+---+---+---+---+---+---+
  2369.  
  2370. where "dir" is 0 for commands being sent to RBcomm from the remote system
  2371. and 1 for commands sent by RBcomm.  RBcomm currently supports the following
  2372. functions:  [Note: this is not yet enough to successfully run UnixWin]
  2373.  
  2374. 0  NEWW      [not yet implemented]
  2375.  
  2376. 1  KILLW  [not yet implemented]
  2377.  
  2378. 2  SELIN  The parameter of this function specifies which "window" will
  2379.       display characters received from the serial port.  UW windows
  2380.       are numbered from 1 to 7 and mapped to RBcomm screens 0 through
  2381.       6.  UW window 0 does not exist; if function 2 is invoked with
  2382.       parameter 0, the command is ignored.
  2383.  
  2384. 3  SELOUT This command is never sent by the remote host, and is thus
  2385.       ignored
  2386.  
  2387. 4  WINOPT [not yet implemented]
  2388.  
  2389. 5  META      If the parameter is 0, set the high bit of the next received
  2390.       character before processing it.  If the next character is a ^A
  2391.       UnixWindows command character, this command will apply to the
  2392.       next non-UW character (or the control character produced by
  2393.       function 6 below)
  2394.       If the parameter is one of the following, act as if the specified
  2395.       character had been received; otherwise, ignore the command.
  2396.       parameter 1 = char 129
  2397.       parameter 2 = char 145
  2398.       parameter 3 = char 147
  2399.  
  2400. 6  CTRL      if the parameter is one of the following, act as if the specified
  2401.       control character had been received; otherwise, ignore the command.
  2402.       If function 5 was received immediately prior to this command, the
  2403.       high bit will be set.
  2404.       1   ^A
  2405.       2   ^Q
  2406.       3   ^S
  2407.  
  2408. 7  MAINT  the parameter specifies one of a number of maintenance functions:
  2409.       0   ENTRY  sent by UW server on startup.  RBcomm enables the
  2410.              UnixWindows protocol on receiving this command.
  2411.       2   ASKPCL remote system requests the start of protocol negotiation.
  2412.              RBcomm responds with CANPCL 1 (the most basic protocol).
  2413.       3   CANPCL remote system specifies a protocol it is capable of
  2414.              supporting in the following byte (1Fh is added to the
  2415.              protocol number to make it printable).  If protocol 1
  2416.              specified, RBcomm responds with SETPCL 1, otherwise it
  2417.              responds with CANPCL 1.
  2418.       4   SETPCL remote system specifies a protocol which both ends are
  2419.              to use.  The protocol is sent in the next byte, with 1Fh
  2420.              added to make it printable.  As RBcomm only supports
  2421.              protocol 1, this function is currently ignored.
  2422.       7   EXIT   sent by UW server on shutdown.  RBcomm disables the
  2423.              UnixWindows protocol on receiving this command.
  2424.  
  2425.  
  2426. ------------------------
  2427. Special RBcomm sequences
  2428. ------------------------
  2429.  
  2430. When RBcomm receives a ^F, the following character specifies the actual
  2431. command.
  2432.  
  2433. ^x    display the IBM PC screen character corresponding to the control
  2434.     character
  2435. 0    turn off visual bell, ^G will beep
  2436. 1    turn on visual bell, ^G will flash the screen, but internally
  2437.     generated beeps still sound
  2438. 2    flash the screen
  2439. 3    beep even if visual bell turned on
  2440. 4    fill area.  Identical to AVATAR ^V^M (see below) but does not cancel
  2441.     insert mode.
  2442. 5    clear from cursor to end of screen
  2443. 6    repeat pattern.     Identical to AVATAR ^V^Y (see below)
  2444. :    disable the UnixWindows protocol
  2445. ;    enable the UnixWindows protocol
  2446. <    set terminal emulation to VT102/ANSI.  Does not affect any other
  2447.       settings
  2448. =    set terminal emulation to ANSI-BBS.  Does not affect any other
  2449.       settings.
  2450. >    set terminal emulation to VT52.     Does not affect any other settings.
  2451. ?    query terminal emulation type.    Sends back <127><type> where type is
  2452.       'A' for VT102/ANSI, 'B' for ANSI-BBS, or 'V' for VT52.  The type
  2453.       is converted to lower case if the UnixWindows protocol is enabled.
  2454. @    send identification (see Esc-Z)
  2455. A    [obsolete--this command no longer does anything]
  2456. B    if next character is '0' through '8' switch to the specified
  2457.     screen, provided that memory was allocated for it at startup.
  2458.     Sends a response of 127-<digit>-<status> to the remote system,
  2459.     where the digit is the screen number from the ^FB command, and
  2460.     status is 'Y' if the screen exists or 'N' if it doesn't.  It is
  2461.     the remote system's responsibility to redraw the screen if the
  2462.     response is 'N'.
  2463. C    if next character is '0' through '8' and the specified screen was
  2464.     allocated at startup, clear that screen to blanks.
  2465.  
  2466. ------------------------
  2467. AVATAR command sequences
  2468. ------------------------
  2469.  
  2470. ^V^A    set screen attribute to low seven bits of following character
  2471. ^V^B    set blink
  2472. ^V^C    move cursor up a line
  2473. ^V^D    move cursor down a line
  2474. ^V^E    move cursor left one space
  2475. ^V^F    move cursor right one space
  2476. ^V^G    clear from cursor to end of line
  2477. ^V^H<r><c>  move cursor to row <r> and column <c>, where the upper left corner
  2478.         is 1,1
  2479. ^V^I    turn on insert mode until next AVATAR command (except ^Y and ^V^Y)
  2480. ^V^J    scroll area up.     Next five characters specify number of lines to
  2481.     scroll, top margin, left margin, bottom margin, and right margin (all
  2482.     margins are based on 1,1 being the upper left corner of the screen)
  2483. ^V^K    scroll area down.  Next five characters are as for ^V^J
  2484. ^V^L    clear area.  Next three characters specify screen attribute for cleared
  2485.     area, number of lines less one, and number of columns less one.     The
  2486.     blink bit of the attribute is ignored, and the current display attribute
  2487.     is set to the attribute of the cleared area.  If the requested area
  2488.     extends beyond the current window limits, it will be truncated to fit.
  2489. ^V^M    fill area.  Next four characters specify screen attribute for filled
  2490.     area, character to fill with, number of lines less one, and number of
  2491.     columns less one.  The current display attribute is set to the filled
  2492.     attribute with blinking turned off.  If the requested area extends
  2493.     beyond the current window limits, it will be truncated to fit.
  2494. ^V^N    delete character at cursor position, shifting the remainder of the
  2495.     line.
  2496.  
  2497. The following commands (except for ^V^Y) are Level 1 extensions.  They
  2498. are not fully implemented, and are not expected to be completely
  2499. correct, as the official specifications have just (1/20/91) been
  2500. published, and I have not had time to implement and test everything.  In
  2501. cases where the official specs differ from the sketchy information I had
  2502. to work with, the behavior will be incorrect.  Those commands marked
  2503. [not implemented] will merely be skipped without any further processing.
  2504.  
  2505. ^V^O    turn clockwise mode on [not implemented]
  2506. ^V^P    not used
  2507. ^V^Q    query.    Next character specifies the type of query
  2508.     ^Q  get driver version info.  Returns the string
  2509.            "AVT0,rbcommN.NNc\r"
  2510.         where N.NN is the RBcomm version and c is the capability byte
  2511.         (see Esc-Z).  This identifies RBcomm as complying with the AVATAR
  2512.         level 0 specification, since level 1 support is still incomplete.
  2513. ^V^R    reset AVATAR [not implemented]
  2514. ^V^S    make a sound.  The next three characters specify the note number,
  2515.     octave, and duration in tenths of a second.  The note is computed as
  2516.         (note-'A')*2 + sharp
  2517.     The current implementation does not queue any tones unless RBcomm is
  2518.     running under DESQview (which can queue notes).
  2519. ^V^T    highlight character at cursor position.     Next character specifies new
  2520.     attribute.
  2521. ^V^U    highlight window.  Next two characters specify the window handle and
  2522.     new attribute.
  2523. ^V^V    define window.    Next six characters specify the window handle, default
  2524.     attribute, top margin, left margin, bottom margin, and right margin.
  2525.     The default attribute is also the initial current attribute for the
  2526.     new window.  Note: window 0 can not be redefined.
  2527. ^V^W    switch to window.  The next character specifies the handle of the
  2528.     window to switch to.
  2529. ^V^X    flush input [not implemented]
  2530. ^V^Y    repeat pattern.     The following character specifies the length of the
  2531.     pattern to be repeated, followed by the pattern, and finally followed
  2532.     by a single character indicating the number of times to repeat the
  2533.     pattern.  The pattern may contain command sequences, but is limited
  2534.     to 80 characters (longer patterns are truncated to 80 characters).
  2535. ^V^\    go to bed [not implemented]
  2536. ^V^]    wake up [not implemented]
  2537. ^V^^    start vertical output [not implemented]
  2538. ^V^_    start horizontal output [not implemented]
  2539. ^V!    poke char/attr to physical screen.  The next four characters specify
  2540.     the character and attribute to poke, and the row and column at which
  2541.     to display that character and attribute.
  2542. ^V"    turn off line wrap
  2543. ^V#    wrap in zigzag mode [not implemented]
  2544. ^V$    turn on line wrap
  2545. ^V%    reverse direction of linefeeds [not implemented]
  2546. ^V&    linefeeds move in normal direction [not implemented]
  2547. ^V'    set cursor type.  The next character specifies the cursor's shape:
  2548.       ^A return to default (startup) cursor shape
  2549.       ^B make cursor invisible (does not work on all systems in all modes)
  2550.       ^C block cursor, covering entire character cell
  2551.       otherwise, this command is ignored
  2552. ^V(    output in forward direction [not implemented]
  2553. ^V)    output in reverse direction [not implemented]
  2554. ^V*    system pause.  The next character specifies the    duration in tenths of
  2555.     a second.  Contrary to the official AVATAR specs, RBcomm treats zero
  2556.     as 256 tenths seconds, rather than a full hour.     This is both more
  2557.     consistent and more secure, as neither keyboard nor serial port
  2558.     activity is possible during a system pause.
  2559. ^V+    insert a line
  2560. ^V,    insert a blank column at the current cursor position
  2561. ^V-    delete current line
  2562. ^V.    delete current column
  2563. ^V/    set/reset static mode [not implemented]     The next character specifies
  2564.     whether or not the cursor should be advanced after outputting a
  2565.     character to the screen.
  2566. ^V0    highlight from cursor to end of line.  The next character specifies
  2567.     the new attribute to be applied to the rest of the line.
  2568. ^V1    highlight from start of line to cursor.     The next character specifies
  2569.     the new attribute to be applied to the beginning of the line.
  2570. ^V:    keyboard mode.    The next character specifies the mode.    RBcomm
  2571.     always returns ^V:0 (default mode), as it does not support this
  2572.     command.
  2573. ^V<    scroll left.  The next five characters specify the number of columns
  2574.     to scroll, the top margin, left margin, bottom margin, and right
  2575.     margin of the area to scroll.
  2576. ^V=    set parser mode.  If the next character ANDed with 1Fh is ^R or ^C,
  2577.     set the mode to raw or cooked, respectively.  In cooked mode, the
  2578.     character immediately following a ^P is ANDed with 1Fh, and the result
  2579.     is treated as if it had arrived from the remote system instead of the
  2580.     ^P sequence.
  2581. ^V>    scroll right.  The next five characters are as for ^V<
  2582. ^V?    peek at physical screen.  The next two characters specify the row and
  2583.     column at which to peek.  RBcomm returns the poke command (see ^V!)
  2584.     needed to restore the given character position to its current state.
  2585.  
  2586. -----------------------------------------------------------------------------
  2587. Acknowledgements
  2588. ----------------
  2589.  
  2590. Thanks to Thomas Zerucha for his numerous comments and suggestions, many of
  2591. which have been implemented.
  2592.  
  2593. Thanks to Walter Cox for his comments and suggestions on v2.81, one of the
  2594. included keyboard bindings, and his patience in testing new versions.
  2595.  
  2596. Thanks to Mike Weaver for his comments and suggestions, some of which have
  2597. been implemented.
  2598.  
  2599. Thanks to Dave Doren for banging on the macro language and reporting bugs
  2600. and possible enhancements.
  2601.  
  2602. -----------------------------------------------------------------------------
  2603. Program History
  2604. ---------------
  2605.  
  2606. v2.72  9/3/89    first public release
  2607. v2.81  10/4/89    second public release
  2608. v3.01  1/6/90    third public release
  2609. v3.12  4/28/90    fourth public release
  2610. v3.21  7/29/90    fifth public release
  2611.  
  2612. v3.22  9/9/90   switched from spawnlo() to spawnlpo(), adjusted Alt-G
  2613.         added DISPLAY command, %N variable expansion
  2614.         stubbed out AVATAR level 1 support
  2615. v3.23  9/23/90    enhanced input line editor
  2616.         fixed subtle bug in environment reading
  2617.         added MDIAL command, %w variable expansion
  2618.         continued adding AVATAR level 1 support
  2619. v3.24  10/6/90    size optimizations
  2620.         added PACECHAR command, SWAPDIR environment variable
  2621. v3.25  10/21/90 added more AVATAR level 1 functions, swap to EMS
  2622.         fixed scrolling-region/cursor-move interaction bug
  2623.         internal changes
  2624. v3.26  11/25/90 more internal changes and size optimizations
  2625.         OPEN_LOG in OnLoad macro now works in all cases
  2626. v3.27  12/9/90    added SELECT_SCREEN command on Alt-W
  2627.         more UnixWindows functions
  2628. v3.28  12/21/90    added commandline options
  2629.         some more AVATAR level 1 functions
  2630.         new DVPWIDTH program for 132 column DESQview windows
  2631. v3.30  1/13/91    completely rewrote file browser, implemented scrollback
  2632.         FILES command now uses new browser
  2633.         added SCROLLBACK, SAVE_SCREEN commands
  2634. v3.31  2/3/91    bugfixes to scrollback
  2635.         some more AVATAR level 1 functions
  2636.         (sixth public release)
  2637.  
  2638. v3.32  2/17/91  restored command entry from help screen
  2639.         added %/ and %\ expansions
  2640.         dialing dir now uses pager, capacity increased to 40 entries
  2641. v3.33  3/17/91    removed SAVE_MACRO/UI_MENU, saving 380 bytes
  2642.         simplified macro learning to single key, saving 330 bytes
  2643.         macro file format changes
  2644.         current macro file now kept if new file not found or invalid
  2645.         new compiled dialing directory allows up to 250 entries
  2646. v3.34  4/10/91    directory pager can now back up on very large directories
  2647.         scrollback buffer can now be written to a file
  2648.         added ALARM, MUSIC, PLAY, SOUND, TFLUSH commands
  2649. v3.35  3/15/92    rearranged RBcomm private terminal functions
  2650.         fixed scrollback and pager problems
  2651.         added AVATAR, EXPAND_BLANK, and RBCOMM_CMDS commands
  2652.         added optional BIOS writes for serial input
  2653.         now supports 115200 bps
  2654.         no longer randomly drops behind actual end of serial input at
  2655.           extremely high speeds
  2656. v3.36  8/23/92    now hide DESQview mouse pointer while inside RBcomm window
  2657.         speed optimizations
  2658.         reworked RBCONFIG for greater ease of use
  2659.         enhanced DIALDIR and merged it into RBCONFIG
  2660. v3.40  1/3/93    fixed RBCONFIG serial-port-info update & dialdir Move bugs
  2661.         added DVEXEC, TRIM, LTRIM, and RTRIM commands
  2662.         added #DOWNLOAD_x and #UPLOAD_x metacommands, %F expansion
  2663.         the elusive dialing rollover bug has been squashed
  2664.         the number pad with NumLock on can now be distinguished
  2665.           from the typewriter number keys using the NP_n keynames
  2666.         MACRO.COM can no longer decompile, but can compile
  2667.           multiple macro files at one time
  2668.         (seventh public release)
  2669. v3.41  1/10/93  fixed RBCONFIG "out of memory" bug when trying to edit dialdir
  2670.         fixed macro compiler multiple-file bug (wasn't resetting
  2671.           #defkeys between files)
  2672.         WAITFOR and WHEN were broken when parity stripping was enabled
  2673.         SENDFILE had been broken by v3.40.  Fixed.
  2674.         added STRIP_PARITY macro command
  2675.         (eighth public release)
  2676.